Javascript 无法读取属性。。。主干中未定义的
我试图将我用raphael.js制作的这个简单项目转换为使用backbone.js,但我一直遇到同样的错误,我不知道为什么。在我的模型中的函数中,我尝试使用“this”访问变量,但仍然会遇到以下错误“无法读取未定义的属性'length'”,例如数组。我的模型如下所示:Javascript 无法读取属性。。。主干中未定义的,javascript,jquery,backbone.js,raphael,Javascript,Jquery,Backbone.js,Raphael,我试图将我用raphael.js制作的这个简单项目转换为使用backbone.js,但我一直遇到同样的错误,我不知道为什么。在我的模型中的函数中,我尝试使用“this”访问变量,但仍然会遇到以下错误“无法读取未定义的属性'length'”,例如数组。我的模型如下所示: GameModel = Backbone.Model.extend({ defaults: { spawnId: '', gameloopId: '',
GameModel = Backbone.Model.extend({
defaults: {
spawnId: '',
gameloopId: '',
checkId: '',
goingUp: false,
counter: 0,
recentscores: [],
enemies: '',
speed: -4,
score: 0,
health: 100,
paper: '',
t: '',
h: '',
c: '',
circle: ''
},
initialize: function(){
this.enemies = [];
this.paper = new Raphael($('#canvas'), 0, 0);
this.circle = this.paper.circle(100, 50, 30);
this.t = this.paper.text(1000, 50, "Score: " + this.score);
this.h = this.paper.text(50, 50, "Health: " + this.health);
this.c = this.paper.image("background.png", 0, 0, 2400, 800);
this.paper.setSize(1200,800);
this.circle.attr({fill: '#9cf', stroke: '#ddd', 'stroke-width': 5});
this.t.attr({ "font-size": 20, "font-family": "Arial, Helvetica, sans-serif" });
this.h.attr({ "font-size": 20, "font-family": "Arial, Helvetica, sans-serif" });
},
为此:
this.feeds=[];
也许你应该试着使用
this.set(“敌人”,[])
及
this.circle=this.paper.circle(100,50,30);
到
this.set(“圈”、this.get(“纸”).circle(100、50、30))
这些“函数”在您的模型中起什么作用“看起来像,你怎么称呼他们?另外,在您的默认值中使用recentscores
是个坏主意,默认值是浅复制的,因此每个人都将共享对同一数组的引用。@muistooshort,它们只是尝试访问模型中定义的变量的函数。我有一个有条件的for循环“是的,但它们怎么叫?通常,此
的值取决于函数的调用方式,而不是函数的定义方式或定义位置。并将您的<代码>默认值对象更改为<代码>默认< /代码>函数,该函数返回默认值。@ MistoSoStopy,哦,嗯,我没有考虑过。大多数函数都是从其他函数中调用的。我有一个启动函数,我在创建模型实例后调用它,启动调用更新等等。这可能是问题吗?我甚至不知道如何访问这些变量。有了getters?在jsfiddle.net或jsbin.com上进行一个简单的演示可能会让问题变得非常清楚。