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、伊娃(Eva)lError、RangeError、ReferenceError、SyntaxError、TypeError、URIError

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

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

ECMAScript 的语法是高枕无忧的,使其能够作为一个容易使用的脚本语言。

譬如,一个变量不需要有项目阐明,属性也不需要与项目涉及,定义的函数也不需要注明在函数调用语句的面前

对象

ECMAScript 不采用诸如 C++、Smalltalk、Java
中的类。相反,对象足以经过各类法子创造,包括字面量符号、构造器
创造对象然后运行代码起先化其整个或部分属性值,并为这多少个属性分配开始值。每个构造器是一个拥闻名为“prototype”属性的函数。此属性用于落实
原型继承 和 属性共享。构造器通过 new 表明式创立对象:例如,new
Date(2009,11) 创制一个新 Date 对象。不应用 new
调用一个构造器的结果,依赖构造器本身。例如,Date()暴发一个意味近来日牛时间的字符串,而不是一个对象

每个由构造器创造的靶子都有一个隐式引用(叫做对象的原型)链接到构造器的“prototype”属性值
。再者,原型可能有一个非空隐式引用链接到它和谐的原型,以此类推,这叫做
原型链。当一个引用被接连到对象的属性上时,引用会指向原型链中包含此属性名的首先个对象对应的性质。换句话说,首先检查对象直接的同名属性,假使目的涵盖同名的特性,引用即针对此属性,倘诺该目的不分包同名的性能,则下一步检查对象的原型,以此类推。

在 ECMAScript
中,对象具备状态和措施,并且组织,行为,状态全都可继承。所有不直接包含原型中蕴藏的特定属性的对象会共享此属性及属性值。对象与原型的关联图
表明了这或多或少:
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
程序可由严厉形式和非严俊格局的代码单元构成。在这种情景下,严俊的情势只适用于严厉形式代码单元内实际履行的代码。