var objectTest=
{
test1: function( )
{
val1 = 1;
},
// hows accessing the
test2: function( )
{
alert( val1 );
}
};
objectTest.test2( );
答案 0 :(得分:4)
如果不使用前缀var
,则将变量置于不同的(全局)范围内尝试:
test1: function() {
var val1=1;
},
正如@Pekka指出的那样,您的示例(上图)需要先调用objectTest.test1();
(创建val1
)否则您将收到错误。如果您想要从两个地方访问变量,那么您应该使用不会添加到全局范围的对象属性(如@patrick dw建议)
objectTest.test1();
objectTest.test2(); //Shows: Alert-1
alert(val1); //Shows: Alert-1
val1=2;
objectTest.test(2); //Shows: Alert-2
答案 1 :(得分:1)
它不能。两个函数不能同时运行,因此以您显示的方式共享本地范围是不可能的。您必须将val1
定义为对象的成员。
答案 2 :(得分:0)
取决于你最终想做什么。您可以将其设为对象的公共成员:
示例: http://jsfiddle.net/wqr6W/
var objectTest=
{
val1: 'someDefault',
test1: function( )
{
this.val1 = 1;
},
// hows accessing the
test2: function( )
{
alert( this.val1 );
}
};
objectTest.test1( );
objectTest.test2( );
这当然会改变您的原始代码。你真正需要做的将取决于你的情况。
或者这个:
示例: http://jsfiddle.net/wqr6W/1/
var objectTest=
{
val1: 'someDefault',
test1: function( )
{
this.val1 = 1;
},
// hows accessing the
test2: function( )
{
this.test1();
alert( this.val1 );
}
};
objectTest.test2( );
答案 3 :(得分:0)
添加另一个答案,以便更直接地回答问题。
如果你实际上是在谈论一个函数的本地变量,那么简单的答案是你可以不访问它,除非你通过具有变量的函数之外的函数,它引用变量。
这称为创建闭包。
示例: http://jsfiddle.net/csd3s/
var objectTest=
{
test1: function( )
{
var val1 = 1;
return {getVal:function() {
return val1;
}};
},
// hows accessing the
test2: function( )
{
alert( this.test1().getVal() );
}
};
objectTest.test2( );
所以在test2
内你可以调用test1()
函数,该函数返回一个包含函数的对象,该函数引用局部变量。
那个(或类似的东西)就是在函数中引用一个不可访问的局部变量所需要的。