【发布时间】:2014-04-27 19:18:03
【问题描述】:
我正在使用 CraftyJS 编写一个小游戏。这是我想写的:
Crafty.scene('MainMap', function() {
this.player = Crafty.e('Player');
this.player.move(5, 5);
this.game_objects = [this.player];
isOccupied: function(x, y) {
for (var i = 0; i < this.game_objects.length; i++) {
// ...
}
}
if (!this.isOccupied(5, 5)) { ... }
// ...
}
不幸的是,这并没有按预期工作;它不是匿名对象,而是一个函数。我必须使用不同的语法,并传入我的对象,如下所示:
function isOccupied(x, y, game_objects) { ... }
// Same place as previous call to isOccupied
if (!isOccupied(x, y, this.gameObjects) { ... }
我很清楚为什么我必须将其声明为 function isOccupied 而不是 isOccupied: function(因为它在函数内部,而不是对象中)但我不清楚 this 的范围是什么。它不会被传递到函数中。
是否有可能以某种方式将对象保持在某个非全局范围内,而不需要将它们传递给isOccupied?
【问题讨论】:
标签: javascript craftyjs