function Foo() {
var myPrivateBool = false,
myOtherVar;
this.bar = function(myOtherVar) {
myPrivateBool = true;
myOtherVar = myOtherVar; // ?????????????????
};
}
如何设置私有变量myOtherVar?
答案 0 :(得分:3)
为参数指定一个不同的名称:
function Foo() {
var myPrivateBool = false,
myOtherVar;
this.bar = function( param ) {
myPrivateBool = true;
myOtherVar = param;
};
this.baz = function() {
alert( myOtherVar );
};
}
var inst = new Foo;
inst.bar( "new value" );
inst.baz(); // alerts the value of the variable "myOtherVar"
如果您愿意,可以创建一个私人函数来设置值。
function Foo() {
var myPrivateBool = false,
myOtherVar;
function setMyOtherVar( v ) {
myOtherVar = v;
}
this.bar = function(myOtherVar) {
myPrivateBool = true;
setMyOtherVar( myOtherVar );
};
this.baz = function() {
alert(myOtherVar);
};
}
var inst = new Foo;
inst.bar("new value");
inst.baz();
答案 1 :(得分:1)
在JavaScript中,约定将私有变量的名称加_(下划线)作为前缀。 遵循此约定,您可以将代码更改为。
function Foo() {
var _myPrivateBool = false,_myOtherVar;
this.bar = function(myOtherVar) {
_myPrivateBool = true;
_myOtherVar = myOtherVar;
};
}
在上面的代码中,我们将局部变量myOtherVar分配给私有变量_myOtherVar。 这样看来,我们的私有变量和局部变量具有相同的名称。
注意:这只是遵循的约定。在变量名前加上_并不能使其成为私有变量。
答案 2 :(得分:-1)
我认为这是.myOthervar = myOtherVar;将损坏全局命名空间并在窗口对象
中创建一个变量window.myOtherVar答案 3 :(得分:-2)
尝试this.myOtherVar = myOtherVar;
答案 4 :(得分:-2)
也许您可以将myOtherVar声明为MyOtherVar,利用javascript的区分大小写,然后将MyOtherVar = myOtherVar分配到函数中:
function Foo() {
var MyPrivateBool = false,
MyOtherVar;
this.bar = function(myOtherVar) {
MyPrivateBool = true;
MyOtherVar = myOtherVar;
};
}