阅读(678) (0)

布尔对象

2017-06-16 15:46:10 更新

作为函数调用布尔构造器

 当把 Boolean 作为函数来调用,而不是作为构造器,它执行一个类型转换。

Boolean (value)

 返回由 ToBoolean(value) 计算出的布尔值(非布尔对象)。

布尔构造器

 当 Boolean 作为 new 表达式的一部分来调用,那么它是一个构造器:它初始化新创建的对象。

new Boolean (value)

 新构造对象的 [[Prototype]] 内部属性设定为原始布尔原型对象,它是 Boolean.prototype (15.6.3.1) 的初始值。

 新构造对象的 [[Class]] 内部属性设定为 "Boolean"。

 新构造对象的 [[PrimitiveValue]] 内部属性设定为 ToBoolean(value)。

 新构造对象的 [[Extensible]] 内部属性设定为 true。

布尔构造器的属性

 布尔构造器的 [[Prototype]] 内部属性的值是函数原型对象 (15.3.4)。

 除了内部属性和 length 属性(值为 1)外,布尔构造器还有以下属性:

Boolean.prototype

 Boolean.prototype 的初始值是布尔原型对象 (15.6.4)。

 这个属性有特性 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }。

布尔原型对象的属性

 布尔原型对象自身是一个值为 false 的布尔对象(它的 [[Class]] 是 "Boolean")。

 布尔原型对象的 [[Prototype]] 内部属性值是标准内置的对象原型对象(15.2.4)。

Boolean.prototype.constructor

 Boolean.prototype.constructor 的初始值是内置的 Boolean 构造器。

Boolean.prototype.toString ( )

 采用以下步骤:

  1. 令 B 为 this 值 .
  2. 如果 Type(B) 是 Boolean, 则令 b 为 B.
  3. 否则如果 Type(B) 是 Object 且 B 的 [[Class]] 内部属性值是 "Boolean", 则令 b 为 B 的 [[PrimitiveValue]] 内部属性值。
  4. 否则抛出一个 TypeError 异常 .
  5. 如果 b 是 true, 则返回 "true"; 否则返回 "false".

Boolean.prototype.valueOf ( )

 采用以下步骤:

  1. 令 B 为 this 值 .
  2. 如果 Type(B) 是 Boolean, 则令 b 为 B.
  3. 否则如果 Type(B) 是 Object 且 B 的 [[Class]] 内部属性值是 "Boolean", 则令 b 为 B 的 [[PrimitiveValue]] 内部属性值。
  4. 否则抛出一个 TypeError 异常 .
  5. 返回 b.

布尔实例的属性

 布尔实例从布尔原型对象继承属性,且布尔实例的 [[Class]] 内部属性值是 "Boolean"。布尔实例还有一个 [[PrimitiveValue]] 内部属性。

 [[PrimitiveValue]] 内部属性是代表这个布尔对象的布尔值。