我有一个名称空间对象
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 ....
是否可以创建某种别名?
有诀窍吗?我是否要更改模块模式?感谢。
答案 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;
}();