1
我對javascript中的proto鏈感到困惑。在下面的代碼中,只有A具有屬性名稱,而B和C則不具有。我認爲正確的是__proto__
設置爲b和c。爲什麼b和c的name屬性的輸出是「undefined」?我如何讓他們打印出「湯姆」?JS中的__proto__鏈,屬性未定義
function A(name) {
this.name = name;
}
function B() {
A.call(this, this.name);
}
function C() {
B.call(this);
}
var a = new A("Tom");
var b = new B();
var c = new C();
b.__proto__ = a;
c.__proto__ = b;
console.log("c.name = " + c.name); // undefined
console.log("b.name = " + b.name); // undefined
console.log("a.name = " + a.name); // Tom
Offtopic提示:[閱讀起來(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain )關於如何在JavaScript中正確執行類繼承。使用'__proto__'並明確指定構造函數/方法中的祖先並不是一個好的開始。 – hon2a 2014-12-01 17:51:16