2012-06-12 9 views
10

Was ist in ECMAScript Internal Property definiert? Was bedeutet die Spezifikation vonWelche interne Eigenschaft in ECMAScript ist definiert?

Diese Spezifikation verschiedene interne Eigenschaften verwendet die Semantik von Objekt values.These internen Eigenschaften ist Teil die ECMAScript Sprache nicht zu definieren. Sie sind durch diese Spezifikation rein zu Erläuterungszwecken definiert.

Bedeutet dies, dass Interne Eigenschaften, die von ECMAScript definiert werden, für die Programmierung nicht verfügbar sind. Sie werden in der Implementierung der Javascript Engine verwendet?

Antwort

0

Sie werden in einem Beispiel des Implementierens einer JavaScript-Engine verwendet.

4

Bedeutet dies, dass durch ECMAScript definierte interne Eigenschaften für die Programmierung nicht verfügbar sind. Sie werden in der Implementierung der Javascript-Engine verwendet?

Ja. Sie dienen nur der Implementierung und benötigen keine "echten Namen". Sie können darüber in #8.6.2 Object Internal Properties and Methods lesen.

1

Das häufig verwendete Beispiel ist die interne Eigenschaft [[Prototyp]], alle Objekte haben einen, aber Sie können nicht direkt darauf zugreifen, zB.

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 

so können Sie die Objekte zugreifen, die die interne Eigenschaft [[Prototyp]] verwenden, aber nicht direkt über den internen [] [Prototyp] zeigen, dass nur für die Laufzeit, den Programmierer nicht zu verwenden.

6

Interne Eigenschaften definieren das Verhalten des Codes, während er ausgeführt wird, aber nicht über Code zugänglich ist. ECMAScript definiert viele interne Eigenschaften für Objekte in JavaScript. Interne Eigenschaften werden durch die doppelte eckige Klammernotation angezeigt.

Zum Beispiel ist JavaScript-Funktion ein Objekt und es hat [[call]] -Eigenschaft. [[Call]] Eigenschaft ist einzigartig zu funktionieren.

Ein weiteres internes Eigenschaftsbeispiel ist die Eigenschaft [[Prototyp]]. Diese Eigenschaft ist ein Zeiger, der auf das Prototypobjekt verweist, das von der Instanz verwendet wird. Da auf die interne Eigenschaft nicht über Code zugegriffen werden kann, kann eine Objektinstanziierung nicht auf den Prototyp zugreifen, während ihre Eigenschaften für das Objekt verfügbar sind. Sie können den Wert der Eigenschaft [[Prototyp]] ermitteln, indem Sie die Object.getPrototypeOf() -Methode für ein Objekt verwenden.

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