标准 ECMAScript 内置对象

2018-06-16 15:26 更新

ECMAScript 代码运行时会有一些可用的内置对象。一是作为执行程序词法环境的一部分的全局对象。其他的可通过全局对象的初始属性访问。

 除非另外指明,如果内置对象拥有 [[Call]] 内部属性,那么它的 [[Class]] 内部属性是 "Function",如果没有 [[Call]] 内部属性,那么它的 [[Class]] 内部属性是 "Object"。除非另外指明,内置对象的 [[Extensible]] 内部属性的初始值是 true。

 许多内置对象是函数:它们可以通过参数调用。其中有些还作为构造器:这些函数可被 new 运算符调用。对于每个内置函数,本规范描述了这些函数的必须参数和 Function 对象的属性。对于每个内置构造器,本规范还描述了这些构造器的 prototype 对象的属性,还描述了用 new 表达式调用这个构造器后返回的具体实例对象的属性。

 除非另外指明了某一特定函数的描述,如果在调用本章中描述的函数或构造器时传入的参数少于必须的参数个数,那么这些函数或构造器将表现为仿佛传入了足够的参数,而那些缺少的参数会设定为 undefined 值。

 除非另外指明了某一特定函数的描述,如果在调用本章中描述的函数或构造器时传入了比函数指定允许的更多的参数时,额外的参数会被函数忽略。然而,一个实现可以为这样的参数列表定义依赖于实现的特别行为,只要这种行为在单纯添加额外参数时不抛出 TypeError 异常。

 实现为了给内置函数集合增添一些额外功能而添加新函数是被鼓励的,而不是为现有函数增加新参数。

 每个内置函数和每个内置构造器都有 Function 原型对象 ,Function.prototype(15.3.4)表达式的初始值作为其 [[Prototype]] 内部属性的值。

 除非另外指明,每个内置的原型对象都有 Object 原型对象 ,Object.prototype(15.2.4) 表达式的初始值作为其 [[Prototype]] 内部属性的值,除了 Object 的原型对象自身。

 除非另外指明了特定函数的描述,否则本章描述的内置函数中不存在不是构造器而要实现 [[Construct]] 内部方法的内置函数。除非另外指明了特定函数的描述,否则本章描述的内置函数都没有 prototype 属性。

 本章通常描述构造器的“作为函数调用”和“用 new 表达式调用” 有不同行为。" 作为函数调用 " 的行为对应于调用构造器的 [[Call]] 内部方法,“用 new 表达式调用”的行为对应于调用构造器的 [[Construct]] 内部方法。

 本章描述的每个内置 Function 对象 -- 不管是构造器还是普通函数,或二者都是 -- 拥有一个 length 属性,其值是个整数。除非另外指明,此值等于显示在函数描述的子章节标题的形式参数的个数,包括可选参数。

 例如描述 String 的 prototype 对象的 slice 属性初始值的函数对象的子章节标题是“String.prototype.slice (start, end)”,这说明有两个形参 start 和 end,所以这个函数对象的 length 属性值是 2。

 任何情况下,本章描述的内置函数对象的 length 属性拥有特性 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }。除非另外指明,本章描述的所有其他属性拥有特性 { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号