2016-08-09 44 views
5

Es gibt einige Eigenschaften in js startet/endet mit doppelten Unterstrichen wie proto. Aber ich weiß, es ist gleich Konstruktor. Prototyp, oder? Ich möchte wissen, ob der ES5/ES6-Standard diese xxx_ Eigenschaftsnamen enthält, oder sie sind nur implementationsspezifische Schlüsselwörter, die in verschiedenen Implementierungen möglicherweise ein anderes Verhalten aufweisen.Sind JavaScript-Eigenschaftsnamen wie "__proto__" in ES5/6 nicht standardisiert?

Plus: Wo kann ich überprüfen, ob ein Schlüsselwort Teil des ES-Standards ist, welche empfohlenen Websites?

Danke.

+2

Es ist nicht gleich "Prototyp". '__proto__' enthält einen Verweis auf einen Objektprototyp. "Prototyp" enthält ein Objekt, das ein Prototyp von Instanzen ist, die dieser Konstruktor erstellt. Der Konstruktor selbst hat einen anderen Prototyp (Sie können dazu den Konstruktor '__proto__' überprüfen) – Maxx

Antwort

4

Ich weiß, es ist gleich Konstruktor.prototype, oder?

No.

Ich möchte wissen, ob ES5/ES6 Standard diese __xxx__ Eigenschaftsnamen enthalten, oder sie sind nur bestimmte Schlüsselwörter Implementierung könnte ein unterschiedliches Verhalten in unterschiedlichen Implementierungen haben?

Sie einen Überblick in der MDN documentation finden können, gibt es __count__, __noSuchMethod__, __parent__, __proto__, __defineGetter__, __defineSetter__, __lookupGetter__ und __lookupSetter__; und alle von ihnen sind veraltet. Andere Implementierungen als Gecko könnten mehr gezeigt haben.

Nur die Getter/Setter-Methoden und __proto__ waren unter den Implementierungen üblich und nur __proto__ got into the compatibilty section of the ES6 standard.

wo kann ich überprüfen, ob ein Schlüsselwort Teil von ES stardard ist, irgendwelche empfohlenen Websites?

Nur lesen the standards themselves!