假设我有 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
's 时,它们每个都共享相同的handlers
属性:
var adam = new testPlayer('Adam');
adam.on('test', function(){});
var eve = new testPlayer('Eve');
// eve.handlers == {'test':<function>}
我在这里想念什么?我明白每个testPlayer
的原型都是new player
我在描述子类时创建的同一个对象。但是有没有办法让所有的 testPlayers 拥有自己的一组处理程序?