ECMAScript中的Internal Property是爲什麼定義的?什麼是規範的ECMAScript中內部屬性的定義是什麼?
本規範使用各種內部屬性來定義對象values.These內部屬性的 語義不是 ECMAScript語言部分的意思。純粹爲了說明的目的,它們由本說明書 定義。
是否意味着ECMAScript定義的內部屬性不可用於編程。他們用於執行JavaScript引擎?
ECMAScript中的Internal Property是爲什麼定義的?什麼是規範的ECMAScript中內部屬性的定義是什麼?
本規範使用各種內部屬性來定義對象values.These內部屬性的 語義不是 ECMAScript語言部分的意思。純粹爲了說明的目的,它們由本說明書 定義。
是否意味着ECMAScript定義的內部屬性不可用於編程。他們用於執行JavaScript引擎?
它們用於如何實現JavaScript引擎的示例。
是否意味着由ECMAScript定義的內部屬性不可用於編程。它們用於執行javascript引擎?
是的。它們僅用於實現目的,並不需要「真實姓名」。您可以在#8.6.2 Object Internal Properties and Methods中閱讀。
常用的例子是內部屬性[[prototype]],所有的對象都有一個,但你不能直接訪問它,例如。
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
這樣你就可以訪問該內部屬性[[原型]]的,但不直接通過內部[[原型]]屬性是隻爲運行時使用,不是程序員指向的對象。
內部屬性定義代碼執行時的行爲,但不能通過代碼訪問。 ECMAScript爲JavaScript中的對象定義了許多內部屬性。內部屬性用雙方括號表示。
例如,JavaScript函數是一個對象,它具有[[call]]屬性。 [[call]]屬性對於函數是唯一的。
另一個內部屬性示例是[[prototype]]屬性。該屬性是一個指向實例正在使用的原型對象的指針。由於不能通過代碼訪問內部屬性,因此對象實例化無法訪問原型,而其屬性全部可用於該對象。您可以通過在對象上使用Object.getPrototypeOf()方法來獲取[[prototype]]屬性的值。
var obj = new Object();
var prototype = Object.getPrototypeOf(obj);
console.log(prototype == Object.prototype);