2015-05-19 94 views
0

我还在这里解决另一个Javascript enigma。JavaScript OOP函数引用尚未声明

考虑以下代码:

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通话明星和明星里面本身有引用映射,但是我越来越不被定义它的错误,当我开始。

现在我已经加入

var m = this.map 

权下的映射声明解决了这个问题,但是这似乎有点古怪。 这样做的正确方法是什么?

谢谢!

+0

显示'map.initialize'函数。 – radiaph

回答

0

尝试分配“这个”正规的变量:

starmap = function(game){ 

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

    self.PI2 = Math.PI * 2; 

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

+0

啊!这么精彩的解决方案,太简单了! 我没有想到! – grumpyGAMER

+0

其非常常见的JS黑客攻击。通常人们将变量命名为“self”或“that” – hugomg