2012-06-12 31 views
10

ECMAScript中的Internal Property是爲什麼定義的?什麼是規範的ECMAScript中內部屬性的定義是什麼?

本規範使用各種內部屬性來定義對象values.These內部屬性的 語義不是 ECMAScript語言部分的意思。純粹爲了說明的目的,它們由本說明書 定義。

是否意味着ECMAScript定義的內部屬性不可用於編程。他們用於執行JavaScript引擎

回答

0

它們用於如何實現JavaScript引擎的示例

4

是否意味着由ECMAScript定義的內部屬性不可用於編程。它們用於執行javascript引擎?

是的。它們僅用於實現目的,並不需要「真實姓名」。您可以在#8.6.2 Object Internal Properties and Methods中閱讀。

1

常用的例子是內部屬性[[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 

這樣你就可以訪問該內部屬性[[原型]]的,但不直接通過內部[[原型]]屬性是隻爲運行時使用,不是程序員指向的對象。

6

內部屬性定義代碼執行時的行爲,但不能通過代碼訪問。 ECMAScript爲JavaScript中的對象定義了許多內部屬性。內部屬性用雙方括號表示。

例如,JavaScript函數是一個對象,它具有[[call]]屬性。 [[call]]屬性對於函數是唯一的。

另一個內部屬性示例是[[prototype]]屬性。該屬性是一個指向實例正在使用的原型對象的指針。由於不能通過代碼訪問內部屬性,因此對象實例化無法訪問原型,而其屬性全部可用於該對象。您可以通過在對象上使用Object.getPrototypeOf()方法來獲取[[prototype]]屬性的值。

var obj = new Object(); 
var prototype = Object.getPrototypeOf(obj); 
console.log(prototype == Object.prototype); 
相關問題