function Foo() {
var myPrivateBool = false,
myOtherVar;
this.bar = function(myOtherVar) {
myPrivateBool = true;
myOtherVar = myOtherVar; // ?????????????????
};
}
如何设置私有变量 myOtherVar?
function Foo() {
var myPrivateBool = false,
myOtherVar;
this.bar = function(myOtherVar) {
myPrivateBool = true;
myOtherVar = myOtherVar; // ?????????????????
};
}
如何设置私有变量 myOtherVar?
给参数一个不同的名字:
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();
在 JavaScript 中,使用 _(下划线)作为私有变量名称的前缀是一种惯例。按照此约定,您可以将代码更改为。
function Foo() {
var _myPrivateBool = false,_myOtherVar;
this.bar = function(myOtherVar) {
_myPrivateBool = true;
_myOtherVar = myOtherVar;
};
}
在上面的代码中,我们将局部变量 myOtherVar 分配给私有变量 _myOtherVar。这样看起来我们的私有变量和局部变量的名称相同。
注意:这只是遵循的约定。使用 _ 为变量名添加前缀不会使其成为私有变量。
我认为 this.myOthervar = myOtherVar; 将破坏全局命名空间并在窗口对象中创建一个变量 window.myOtherVar
尝试this.myOtherVar = myOtherVar;
也许您可以将 myOtherVar 声明为 MyOtherVar,利用 javascript 的大小写敏感性,然后将 MyOtherVar=myOtherVar 分配给函数:
function Foo() {
var MyPrivateBool = false,
MyOtherVar;
this.bar = function(myOtherVar) {
MyPrivateBool = true;
MyOtherVar = myOtherVar;
};
}