![](/img/trans.png)
[英]JavaScript: callback function parameter with same name as other variable?
[英]Setting a Javascript Private Variable with the same name as a Function Parameter?
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 對象中創建一個變量 window.myOtherVar
也許您可以將 myOtherVar 聲明為 MyOtherVar,利用 javascript 區分大小寫的優勢,然后將 MyOtherVar=myOtherVar 分配給函數:
function Foo() {
var MyPrivateBool = false,
MyOtherVar;
this.bar = function(myOtherVar) {
MyPrivateBool = true;
MyOtherVar = myOtherVar;
};
}
試試this.myOtherVar = myOtherVar;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.