Wie wir wissen, wenn wir versuchen, auf die Eigenschaft eines Objekts zuzugreifen, prüft es zuerst, ob das Objekt eine eigene Eigenschaft hat. Wenn es nicht findet, durchläuft es den Prototyp und überprüft, und so weiter die Prototyp-Kette.In allen Fällen, in denen ein Objekt seine Prototypkette nicht durchläuft, um einen Wert zu erhalten?
auf die Frage kommen, bitte den unten stehenden Code-Schnipsel (http://jsbin.com/mabajidoti/edit?js,console)
function CT() {}
CT.prototype.myValue = 4;
var myObj = Object.create(CT);
console.log(myObj.myValue); //logs undefined
console.log(myObj.prototype.myValue) //logs 4
Aus dem obigen Schnipsel, die ersten console.log Anweisung überprüfen, kehrt myObj.myValue undefined obwohl myValue in seiner Verfügung Prototyp (2. console.log-Anweisung)? Sollte es nicht die Prototypkette durchlaufen haben, um den Wert von myValue zu erhalten?
'CT.prototype' als Prototyp verwendet wird von neuen Instanzen von 'CT'. 'Object.create (CT);' erstellt ein neues Objekt mit 'CT' selbst als Prototyp. Wenn Sie möchten, dass "CT.prototype" der Prototyp ist, müssen Sie 'Object.create (CT.prototype)' aufrufen. –
* "Irgendwelche Fälle, in denen ein Objekt seine Prototypkette nicht durchläuft, um einen Wert zu erhalten?" * Nein. –