這似乎是許多人已經討論過的事情。但不幸的是,我找不到我的問題的答案。 這裏是Javascript繼承一段代碼(從一本書):Javascript中的「new」和「prototype.constructor」之間的關係是什麼?
function Car() {
var self = this;
self.type = "Car"
self.go = function() {
console.log("Going...");
};
};
Toyota = function() { console.log("Original called"); };
Toyota.prototype = new Car();
Toyota.prototype.constructor = function() {
var self = this;
self.type = "Toyota";
self.go = function() {
console.log("A Toyota car is going...");
}
};
Toyota.prototype.isJapaneseCar = true;
function TestCar() {
console.log("Toyota.prototype.constructor: " + Toyota.prototype.constructor);
var t = new Toyota();
console.log("t.constructor: " + t.constructor);
console.log(t.type);
};
而且在Firefox控制檯輸出:
Toyota.prototype.constructor: function() {
var self = this;
self.type = "Toyota";
self.go = function() {
console.log("A Toyota car is going...");
};
}
Original called
t.constructor: function() {
var self = this;
self.type = "Toyota";
self.go = function() {
console.log("A Toyota car is going...");
};
}
Car
從輸出,它表明新豐田( )電話:
var t = new Toyota();
沒有援引Toyota.prototype.constructor的功能預期的,相反它還是叫首先定義的函數:
Toyota = function() { console.log("Original called"); };
一個post高給予好評數一起給了一個相當詳細的解釋與例子:它說:「3.執行構造函數,每當提到這一點時使用新的對象。 「那麼 」構造「:{(原稱爲」);
- 豐田=()函數的console.log}?「。 prototype.constructor =函數(){...
- 變種T =新豐田();
[編輯]什麼最讓我困惑就是爲什麼構造(Toyota.prototype.constructor)不是我nvoked當我打電話新豐田()?
'Func.prototype.constructor'應該只指向'Func'。你的情況下的構造函數是'豐田'。 –