2012-06-12 25 views
10

ECMAScriptのInternal Propertyは何のために定義されていますか?スペックはECMAScriptの内部プロパティはどのように定義されていますか?

この仕様は のECMAScript言語の一部ではないオブジェクトvalues.These内部プロパティの 意味を定義するために、様々な内部プロパティを使用することによって何を意味しています。これらは、本明細書 によって明確に説明目的で定義されている。

ECMAScriptで定義された内部プロパティは、プログラミングに使用できません。それらは、javacriptエンジンの実装に使用されていますか?

答えて

0

これらは、JavaScriptエンジンの実装方法の例ので使用されています。

4

ECMAScriptで定義された内部プロパティがプログラミングに使用できないということですか?それらはjavascriptエンジンの実装に使用されていますか?

はい。それらは実装の目的のためだけであり、「実名」は必要ありません。あなたはそれについて#8.6.2 Object Internal Properties and Methodsで読むことができます。

1

頻繁に使用される例は内部プロパティ[[prototype]]ですが、すべてのオブジェクトには1つありますが、直接アクセスすることはできません。

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]]プロパティは関数固有のものです。

もう1つの内部プロパティの例は[[prototype]]プロパティです。このプロパティは、インスタンスが使用しているプロトタイプオブジェクトを指すポインタです。内部プロパティはコードを介してアクセスすることができないため、オブジェクトのインスタンス化はプロトタイプにアクセスすることはできませんが、そのプロパティはすべてオブジェクトで使用できます。オブジェクトのObject.getPrototypeOf()メソッドを使って、[[prototype]]プロパティの値を取得できます。

var obj = new Object(); 
var prototype = Object.getPrototypeOf(obj); 
console.log(prototype == Object.prototype); 
関連する問題