2012-05-10 39 views
0

我記得讀書的地方,函數的參數都被轉換爲私有變量的函數中,所以我嘗試這樣做:javascript函數的參數爲​​私有變量

var node = function(nParent,nName,nContent){ 
    this.init = function(){ 
     alert(nName+" "+nParent+" "+nContent); 
    } 
}; 

var a = new node("A - parent","A - name","A - content"); 
var b = new node("B - parent","B - name","B - content"); 

a.init(); 
b.init(); 

它提醒了正確的參數傳遞,因此這是正確的,而不是使用大概是這樣:

var node = function(nParent,nName,nContent){ 
    var parent = nParent; 
    var name = nName; 
    var content = nContent; 
    this.init = function(){ 
     alert(name+" "+parent+" "+content); 
    } 
}; 

我知道我將不得不使用第二版本,如果我想要做的是爲其指定私有變量之前的參數檢查任何形式的額外的驗證,我只是不想浪費空間如果ar已經是私人變數,永遠不會去任何地方,這是一個合理的事情嗎? 謝謝,

+0

你是不是故意說'alert(name +「」+ parent +「」+ content);' – JaredPar

+0

是的,謝謝,現在修好了 – 0xor1

回答

5

當然沒關係。這些參數是實例化的變量,與您設置的其他變量沒有明顯區別。

現在,如果你沒有使用任何命名參數,並使用arguments代替,然後會有一個區別:在代碼的可讀性,甚至表現(有使用arguments一個點球)。

所有這一切的缺點是你的變量定義不會全部在同一個地方。 (假設在這個函數中會有更多的變量定義和賦值,超過了參數的傳遞。)

0

是的;那很好。