我正在尝试了解如何在Google Apps脚本中使用javascript原型和继承,但显然我仍然遗漏了一些内容。
这是我正在研究的结构。
function Father ( ) {
this.init.apply ( this, arguments );
}
Father.prototype ={
init: function ( ) {
var optns = arguments[0] || {};
this.job = optns.job || "unemployed";
this.cars = optns.cars || [];
}
}
function Son ( ) {
this.init.apply ( this, arguments );
}
Son.prototype = {
init : function ( ) {
Father.prototype.init.apply (this, arguments);
var optns = arguments[0] || {};
this.computers = optns.tablets || [];
}
}
Son与父亲的不同之处仅在于拥有计算机的财产。
function life() {
var Tom = new Father({job:'carpenter', cars: ['fiat']});
var Jim = new Son(Tom);
Jim.computers.push('iMac');
Jim.job = 'trader';
Jim.cars.push('bmw');
return
}
在这里,我希望Son实例 Jim 以与 Tom 相同的值开始(作为一个木匠并拥有一个法定货币)但随后,随着生活的继续,我我希望 Jim 的值可以从 Tom 中独立更改 。 事实上,我可以在不影响 Tom 的情况下添加计算机并将作业更改为 Jim 但是当我向Jim添加汽车时,'bmw'也会添加到Tom的汽车中。为什么???
注意:如果我替换此行
,代码可以正常工作var Jim = new Son(Tom);
带
var Jim = new Son({job:'carpenter', cars: ['fiat']})
但我不明白为什么。