我再次在这里解决另一个Javascript之谜。
考虑以下代码:
starmap = function(game){
this.PI2 = Math.PI * 2;
this.renderer = {
...
}
this.star = function (...) {
console.log(this.map);
...
}
this.map = {
...
}
}
starmap.prototype = {
preload: function(){},
create : function(){
this.map.initialize('starmap');
},
update: function(){
}
}

map.initialize调用star和star本身有对map的引用,但我在开始时没有定义它的错误。
现在我已经通过添加
解决了这个问题var m = this.map
在地图声明下,但这似乎有点古怪。 这样做的正确方法是什么?
谢谢!
答案 0 :(得分:0)
尝试将“this”分配给常规变量:
starmap = function(game){
var self = this; //<----
self.PI2 = Math.PI * 2;
然后将this
的所有用途替换为self
。例如,self.map
而不是this.map
。在Javascript中使用this
非常棘手,因为它的值会根据您调用当前函数的方式而改变。