我正在尝试理解基于原型的纯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
这有效,但会继续吗?任何人都可以预测任何不必要的结果吗?
答案 0 :(得分:2)
像@pimvdb所说,删除状态,这很有效。
// very generic prototype
var Apparatus = (function(){
var self = Object.create({});
self.on = function() { this.state = true; };
return self;
})();
// more specific prototype
var Radio = (function(){
var self = Object.create(Apparatus);
self.setFrequency = function(f) { this.frequency = f; }
self.getFrequency = function() { return this.frequency; }
return self;
})();
然后我使用Object.create(Object, params)
来实例化它。