我试图理解纯基于原型的 JavaScript,而我正在努力解决的一个具体问题是重用(继承)。
对于我的项目,我采用了这种创建可重用对象的方式。
// very generic prototype
var Apparatus = (function(){
var self = Object.create({});
self.state = false;
self.on = function() { this.state = true; };
return self;
})();
// more specific prototype
var Radio = (function(){
var self = Object.create(Apparatus);
self.frequency = 0;
self.setFrequency = function(f) { this.frequency = f; }
self.getFrequency = function() { return this.frequency; }
return self;
})();
然后我想“实例化”/复制 Radio 对象,创建两个不同的收音机。
var kitchenRadio = Object.create(Radio);
kitchenRadio.state = false;
kitchenRadio.on();
var carRadio = Object.create(Radio);
carRadio.state = false;
console.log(kitchenRadio.state, carRadio.state);
// true false
这有效,但它会继续吗?任何人都可以预测任何不想要的结果吗?