ES5概述(ECMAScript262/5.1)

ES5概述(ECMAScript262/5.1)

本文参考:ES5概述

ECMAScript 是因对象的:

主干语言及宿主设施还由对象提供,ECMAScript
程序是千篇一律组而通信的目标。ECMAScript
对象是性质的聚众,每个属性有零个或多独
特性,以及性能的应用方式。例如,当装一个性的Writable 特性为 false
时,任何试图改变此属性值的 ECMAScript 代码的且见面执行破产。

  1. 特性是一个器皿,它好存放其他 对象、原始值、函数。
  2. 原始值是以下内置类型有的积极分子:Undefined、Null、Boolean、Number、String;原始值可以直接表示语言实现的最为底部数据;对象是多余的停放类型
    Object 的成员,对象是性质之聚合,并产生一个原型对象。原型可以是空值。
  3. 函数是只是调用的对象。
  4. 方式是通过性与目标关系的函数。
  5. 构造器:创建及初始化对象的函数对象。 注:
    构造器的“prototype”属性值是一个原型对象,它因此来兑现连续和共享属性。
  6. 原型:为其它对象提供共享属性的目标。注:
    当构造器创建一个靶时,为了缓解对象的性质引用,该对象见面隐式引用构造器的“prototype”属性。通过序表达式
    constructor.prototype
    可以引用到构造器的“prototype”属性。并且,添加到目标原型里的性能会透过连续的方式以及有着共享斯原型的对象共享。另外,可使用
    Object.create 内置函数,通过明确指定原型来创造一个新对象。
  7. 坐对象:由 ECMAScript 实现提供,独立于宿主环境之目标,ECMAScript
    程序开始施行时即存在。注: 标准的放开对象由准专业定义,ECMAScript
    实现好指定同概念其他的。所有坐对象还是原生对象。内置构造器是个放置对象,同时也是单构造器。
  8. 宿主对象:由宿主环境提供的对象,用于完善 ECMAScript 执行环境。注:
    任何不是原生对象的对象就是宿主对象。
  9. 其它:
    undefined值:说明一个变量没有受分配值的一个原始值
    Undefined 类型:undefined 值是 Undefined 类型绝无仅有的一个价。
    null 值:代表对象值故意留空的一个原始值。
    Null 类型:null 值是 Null 类型绝无仅有的一个价。
    Boolean 值:Boolean 类型的积极分子。 注: 只发生半点独 Boolean 值,true 和
    false 。
    Boolean 类型:由原始值 true 和 false 组成的种类。
    Boolean 对象:Object 类型的成员,它是正统内置构造器 Boolean
    的实例。注: 通过应用 new 表达式,以一个 Boolean 值作为参数调用
    Boolean 构造器来创造 Boolean 对象。由此有的目标涵盖一个价为者
    Boolean 值的里边属性。Boolean 对象好强制转换为 Boolean 值。
    String
    值:原始值,它是零个或多独16各无符号整数组成的有限有序序列。注:
    String 值是 String 类型的成员。通常列中的每个整数值代表 UTF-16
    文本的么16号单元。然而,对于那个价,ECMAScript
    只要求要是16各项无符号整数,除此之外没有任何限制还是要求。
    String 类型:所有或的 String 值的聚合。
    String 对象:Object 类型的积极分子,它是专业内置构造器 String 的实例。
    流淌: 通过采用 new 表达式,以一个 String 值为参数调用 String
    构造器来创造 String 对象。由此有的目标涵盖一个价为夫 String
    值的内属性。将 String 构造器作为一个函数来调用,可将一个 String
    对象强制转换为一个 String 值(15.5.1)。
    Number 值:原始值,对许一个64位对精度二迈入制 IEEE754 值。
    流动: Number 值是 Number 类型的成员,是一个数字之明朗表示法 。
    Number 类型:所有可能的数字值的联谊,包括特殊的“Not-a-Number”(NaN)
    值、正无根本、负无穷。
    Number 对象:对象类型的分子,它是规范内置构造器 Number
    的一个实例。注: 通过采用 new 表达式,以一个数字值为参数调用 Number
    构造器来创造数字对象。由此产生的靶子涵盖一个值也是数字值的中属性。将
    Number 构造器作为一个函数来调用,可拿一个 Number
    对象强制转换为一个数字值(15.7.1)。
    Infinity:正无穷 Number 值。
    NaN:值为 IEEE 754“Not-a-Number”的 Number 值。
    函数:Object 类型的成员,标准内置构造器 Function
    的一个实例,并且只是用作子程序被调用。注:
    函数除了有着命名的性质,还包含可实施代码、状态,用来规定给调用时的表现。函数的代码不限于
    ECMAScript。
    嵌入函数属于函数的放对象。 注: 如 parseInt 和 Math.exp
    就是放开函数。一个实现好提供本标准没有描述的因让贯彻之放置函数。
    特性:一个称谓与一个价内的关联;属性本身是目标的平等组成部分。 注:
    根据性形式之不等,其值可以直接表现吧一个数据值(原始值、对象、函数对象)或间接地经一致对访问器函数来呈现。
    方:作为属性值的函数。注:
    当一个函数被用作一个目标的不二法门调用时,此目标将用作 this
    值传递让函数。
    放开方法:属于内置函数的办法。注: 标准内置方法由本标准定义,一个
    ECMAScript 实现可指定,提供任何附加的搁方法。
    特性:用于定义属性之有特点的里价。
    自己性质:对象直接持有的属性。
    此起彼伏属性:不是目标的本身性质,但是对象原型的性质(可以是自家还是连续的)。

ECMAScript 定义了同一组内置对象,完善了 ECMAScript 实体的定义。

这些内置对象包括
全局对象、Object对象、Function对象、Array对象、String对象、Boolean对象、Number对象、Math对象、Date对象、RegExp对象、JSON对象

Error对象:Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError

ECMAScript 中还定义一组内置运算符。

ECMAScript 运算符包括
一初运算符、乘法运算符、加法运算符、位移运算符、关系运算符、等值运算符、二冠按个运算符、二元逻辑运算符、赋值运算符、逗号运算符。

ECMAScript 的语法是麻木不仁的,使该能够当一个善使的脚本语言。

诸如,一个变量不需要有品种声明,属性也非需与类型涉及,定义的函数也无欲声明在函数调用语句的前面

对象

ECMAScript 不以诸如 C++、Smalltalk、Java
中的类。相反,对象足以经各种方式创造,包括字面量符号、构造器
创建对象然后运行代码初始化其全方位要有属性值,并为这些属于性分配初始值。每个构造器是一个拥有名为“prototype”属性之函数。此属性用于落实
原型继承 和 属性共享。构造器通过 new 表达式创建对象:例如,new
Date(2009,11) 创建一个新 Date 对象。不以 new
调用一个构造器的结果,依赖构造器本身。例如,Date()
产生一个象征目前日子时之字符串,而未是一个目标

每个由构造器创建的目标还出一个隐式引用(叫做对象的原型)链接到构造器的“prototype”属性值
。再者,原型可能产生一个非空隐式引用链接到她自己的原型,以此类推,这名
原型链。当一个援被连续到对象的性能上时,引用会指向原型链中包含此属性名的首先单对象对应之习性。换句话说,首先检查对象直接的同名属性,如果目标涵盖同名的属性,引用即针对此属性,如果该对象不含同名的性,则生一致步检查对象的原型,以此类推。

于 ECMAScript
中,对象拥有状态与艺术,并且组织,行为,状态都可承。所有不直接包含原型中寓的一定属性之目标会同步享此属性和属性值。对象同原型的涉图
说明了及时或多或少:
图片 1
CF 是一个构造器(也是一个目标)。五个目标都就此 new 表达式创建 :
cf1、cf2、cf3、cf4、cf5。每个对象都有名吧 q1 跟 q2
的特性。虚线表示隐式原型关系;例如:cf3 的原型是 CFp。构造器 CF
自己名牌吧 P1 和 P2 的星星点点只属性,这对 CFp、cf1、cf2、cf3、cf4、cf5
是不可见的。CFp 中名为 CFP1 的习性与其余在 CFp
的隐式原型链中能找到且不叫也 q1、q2、CFP1 的性能都吃
cf1、cf2、cf3、cf4、cf5 所共享(但无为 CF 共享)。请留意 CF 和 CFp
之间从未隐式原型链接。
不同为依据类的靶子语言,属性可以由此赋值的道动态增长给目标。也就是说,构造器并无是不要是对结构的靶子的全方位还是外性质命名或赋值。上图中,可以为
CFp 添加新属性值的方式也 cf1、cf2、cf3、cf4、cf5 添加一个初的共享属性。

ECMAScript 的严酷模式变体

ECMAScript
语言认为存在部分期限制语言中或多或少职能的用户。他们这样做可能是以安全考虑,规避那些他们觉得好出错的成效,从而赢得更强的不当检查,或者其它因。为了支持这种可能的气象,ECMAScript
定义了语言的严厉变体。语言的严厉变体,排除了 ECMAScript
语言中一些特定的句法和语义特征,还修改了一些意义的详细语义。严格变体还指定了附加一些须抛弃来荒唐非常报告的左条件,而以非严格的言语模式下这些标准不属于左。
ECMAScript 的严苛变体通常被称语言的 严格模式。严格模式选择用
ECMAScript 严格模式的语法和语义,明确地适用于个别 ECMAScript
代码单元级别。由于严格模式适用于选的语法代码单元级别,严格模式只见面在这代码单元内施加带有局部效果的限量。严格模式不在语义层面限制或者涂改外要在多单代码单元运行的
ECMAScript 代码。一个 ECMAScript
程序可由于严格模式及非严格模式的代码单元构成。在这种状态下,严格的模式只适用于严苛模式代码单元内实际执行的代码。