对于被定义什么样的内部属性在ECMAScript中?(What Internal Property

2019-06-25 10:55发布

什么是内部属性在ECMAScript中定义的呢? 什么是规范的意思

本说明书中使用的各种内部属性来定义对象values.These内部属性的语义不ECMAScript语言的一部分。 他们本规范纯粹是为了说明的目的定义。

这是否意味着由ECMAScript中定义的内部属性不适用于编程。 它们在JavaScript引擎的实现中使用

Answer 1:

内部属性定义的代码的行为,因为它会执行,但无法通过代码访问。 ECMAScript中定义了JavaScript对象的许多内部属性。 内部性质由双方括号标记表示。

例如,JavaScript函数是一个对象,它已[[调用]]属性。 [致电]]属性是独特的功能。

另一个内部属性的例子是[[原型]]属性。 此属性是指回该实例使用原型对象的指针。 由于内部属性不能通过代码访问的,而其性质是可用的所有对象的对象实例化不能访问到的原型。 可以通过使用Object.getPrototypeOf()方法在物体上获得[[原型]]属性的值。

var obj = new Object();
var prototype = Object.getPrototypeOf(obj);
console.log(prototype == Object.prototype);


Answer 2:

这是否意味着由ECMAScript中定义的内部属性不适用于编程。 它们在JavaScript引擎的实现中使用?

是。 他们只是执行的目的,并且不需要“实名制”。 你可以读到,在#8.6.2对象的内部属性和方法 。



Answer 3:

经常使用的例子是内部属性[[原型],所有对象都有一个,但你不能直接访问它如。

function foo(){
    this.first = "hi"
    this.second = something
}
foo.prototype = {
    constructor : foo,
    anotherProp : "hello"
}

var obj = new foo();

console.log(obj.anotherProp); //hello
//here the runtime will look in obj for anotherProp and
//fail to find it so it will look in obj's internal property
//[[prototype]] which is pointing to the object foo.prototype

这样你就可以访问该内部属性[[原型]]的,但不直接通过内部[[原型]]属性是只为运行时使用,不是程序员指向的对象。



Answer 4:

他们在如何实现一个JavaScript引擎的例子中使用。



文章来源: What Internal Property In ECMAScript is defined for?