0
我嘗試在Javascript中行使繼承性。 eCar從繼承自Vehicle的汽車繼承。但似乎我不能使用帶Car或eCar對象的方法「getInfo()」。 如果我在瀏覽器中執行這樣的結果是:。我是否繼承了對象的方法?我怎樣才能達到結果?
Manufacture: Siemens
undefined
undefined
請告訴我我在尋找的是:
Manufacture: Siemens
Manufacture: VW
Manufacture: Tesla
。
function Vehicle(herst){
this.manuf = herst;
}
Vehicle.prototype.getInfo = function(){
return 'Manufacture: '+ this.manuf+'<br>';
}
Car.prototype = Vehicle;
Car.prototype.construtor = Vehicle;
Car.prototype.getInfo = Vehicle;
function Car(){ }
eCar.prototype = Car;
eCar.prototype.construtor = Car;
eCar.prototype.getInfo = Car;
function eCar(){ }
Train = new Vehicle('Siemens');
document.write(Train.getInfo()+"<br>");
Golf = new Car('VW');
document.write(Golf.getInfo()+"<br>");
Tesla = new eCar('Tesla');
document.write(Tesla.getInfo()+"<br>");
我建議看看[簡介面向對象的JavaScript(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript)。它提供了一個關於如何設置繼承的例子。 –
我認爲它是'Car.prototype = new Vehicle();'和'eCar.prototype = new Car();'等等不是嗎? – Andy
@最好不要,你正在創建一個Vehicle實例來設置Car的原型。車輛具有特定於實例的成員,它們現在處於Car的共享原型上,並且可能會有意想不到的結果。您可以通過在Car構造函數中使用'Vehicle.call(this,args)'來調解,但在定義對象時創建Vehicle的實例時仍然會遇到麻煩。更好地使用Object.create和polyfil它爲舊版瀏覽器 – HMR