【发布时间】:2013-04-03 17:23:43
【问题描述】:
假设我有 Player 对象:
var player = function(name) {
this.handlers = {};
}
player.prototype.on = function(event, callback) {
if (!this.handlers[event]) {
this.handlers[event] = [];
}
this.handlers[event].push(callback);
}
效果很好,我可以创建播放器,每个播放器都有自己的一组处理程序。现在假设我需要从player继承:
var testPlayer = function(name) {
this.name = name;
};
testPlayer.prototype = new player();
现在,当我创建 testPlayer 时,它们每个都共享相同的 handlers 属性:
var adam = new testPlayer('Adam');
adam.on('test', function(){});
var eve = new testPlayer('Eve');
// eve.handlers == {'test':<function>}
我在这里缺少什么?我理解每个testPlayer 的原型与我在描述子类时创建的new player 对象相同。但是有没有办法让所有的 testPlayer 拥有自己的一组处理程序?
【问题讨论】:
标签: javascript prototypal-inheritance prototype-programming