JavaScript OOP函数引用尚未声明

时间:2015-05-19 16:29:53

标签: javascript oop scope

我再次在这里解决另一个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

在地图声明下,但这似乎有点古怪。 这样做的正确方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试将“this”分配给常规变量:

starmap = function(game){

    var self = this; //<----

    self.PI2 = Math.PI * 2;

然后将this的所有用途替换为self。例如,self.map而不是this.map。在Javascript中使用this非常棘手,因为它的值会根据您调用当前函数的方式而改变。