Javascript 发送对象';属性作为函数的参数返回未定义的
我正在进入javascript/jQuery,因此我正在构建一个植物vs僵尸。我为敌人创建了一个对象,并为显示该代码的每个敌人创建了一个引用: 这就是目标:Javascript 发送对象';属性作为函数的参数返回未定义的,javascript,jquery,object,Javascript,Jquery,Object,我正在进入javascript/jQuery,因此我正在构建一个植物vs僵尸。我为敌人创建了一个对象,并为显示该代码的每个敌人创建了一个引用: 这就是目标: var Enemy = function(row, num) { 'use strict'; this.row = row; this.number = num; this.move_interval; this.html_element; }; Enemy.prototype.create = f
var Enemy = function(row, num) {
'use strict';
this.row = row;
this.number = num;
this.move_interval;
this.html_element;
};
Enemy.prototype.create = function() {
this.html_element = $('<div class="enemy '+this.row+' full" style="left:1140px;top: '+$('tr.row_'+this.row).position().top+'px"></div>').prependTo('.container');
return this;
};
Enemy.prototype.die = function() {
clearInterval(this.move_interval);
this.html_element.remove();
return this;
};
Enemy.prototype.move = function() {
this.move_interval = setInterval(function() {moveEnemy(this.number)}, 2000);
return this;
};
这是创建敌人的函数(随机的东西是因为我有四行敌人可以在上面繁殖,这也是对象中属性行的用途):
我尝试了几种方法,通过编辑move敌手函数来获取属性“html_element”作为参数,并以这种方式进行操作:
function moveEnemy(obj) {
obj.animate({left: "-=150"}, 2000, "linear");
}
我试着把它写得像敌人一样[number][html_元素],因为我读到这实际上是获得一个属性的方法,但效果不太好。它总是告诉我参数('obj'或上面的'number'未定义)
有人能看出那个错误吗?D:问题出在您的
setInterval
函数中,该函数的作用域已更改,此
已成为全局(窗口)对象
将move
功能更改为:
Enemy.prototype.move = function() {
var me = this;
this.move_interval = setInterval(function() {moveEnemy(me.number)}, 2000);
return this;
};
使用上述修复程序的JSFIDLE可以在id发布小提琴时正常工作。
function moveEnemy(number) {
enemies[number].html_element.animate({left: "-=150"}, 2000, "linear");
}
function moveEnemy(obj) {
obj.animate({left: "-=150"}, 2000, "linear");
}
Enemy.prototype.move = function() {
var me = this;
this.move_interval = setInterval(function() {moveEnemy(me.number)}, 2000);
return this;
};