Javascript如何为命名空间对象的“范围”创建别名

时间:2014-07-31 12:10:23

标签: javascript

我有一个名称空间对象

    ONE.TWO.THREE = {
    my_var:'', 
    myfunction : function () {
      my_var = 1;                //does not work >> undefined
      ONE.TWO.THREE.my_var = 1 ; // works fine but it is a lot of code
    }  
  ...... }

'这'不起作用(窗口......)所以我必须创建或使用范围'或者' self'变种。但在这种情况下,我不能(或者我不知道如何)。,

到现在为止我必须使用ONE.TWO.THREE.my_var ....
是否可以创建某种别名?

有诀窍吗?我是否要更改模块模式?感谢。

2 个答案:

答案 0 :(得分:3)

您有以下选择:

ONE.TWO.THREE = {
   my_var : 0,
   fn : function(){ this.my_var = 10; }
};
ONE.TWO.THREE.fn(); // Will se ONE.TWO.THREE.my_var to 10 
                    // because the this will referr to the object

或者使temp变量引用对象

var XX = {
  YY : {
     my : 0,
     fn : function(){
         var tmp = XX.YY; // Save the var to a temp var.
         tmp.my = 10;
     }
  }
}

XX.YY.fn() // Set to 10
XX.YY.my // Will be 10

答案 1 :(得分:0)

  

我是否需要更改模块模式?

你不必,但如果你不想使用this(问题的评论暗示你不要),这可能是最清楚,最简单的方法:

ONE.TWO.THREE = function() {
    var three = {
        my_var: '',
        myfunction: function() {
            three.my_var = 1;
        }
    };
    return three;
}();
相关问题