gpt4 book ai didi

javascript - 默认属性未在 Backbone 中的继承模型上设置

转载 作者:行者123 更新时间:2023-11-30 17:54:21 24 4
gpt4 key购买 nike

我在学习 Backbone 的同时尝试构建一个简单的 2D 游戏,但我在继承的工作方式方面遇到了困难。为什么没有设置 EntityModel 中的默认值? tick() 的输出总是:

x: undefined
y: undefined

简化代码:

$(function(){

EntityModel = Backbone.Model.extend({

defaults: function(){
return {
x : 0,
y : 0
};
},

tick: function(){
console.log('x: ' + this.get('x'));
console.log('y: ' + this.get('y'));
}

});

PlayerModel = EntityModel.extend({

defaults: function() {
return {
name : 'John Doe',
health : 10
};
},

initialize: function(options){
console.log('New player ('+this.get('name')+') entered the game');
}

});

var player1 = new PlayerModel();

var gameloop = window.setInterval(function(){
player1.tick();
}, 40);

});

最佳答案

PlayerModel 中的defaults 声明掩盖了在其父类中完成的声明。您必须显式合并 EntityModel 中的默认值。例如:

var PlayerModel = EntityModel.extend({
defaults: function() {
var defaults_parent = _.result(EntityModel.prototype, 'defaults'),
defaults_self = {
name : 'John Doe',
health : 10
};

return _.defaults(defaults_self, defaults_parent);
}
});

还有一个演示 http://jsfiddle.net/nikoshr/epCsy/

关于javascript - 默认属性未在 Backbone 中的继承模型上设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18375278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com