2012-03-20 262 views
2
function Cons(name) { 
var pvar1="hi "+name; 
sayhi = function() { 
    alert(pvar1); 
} 
attEvents(){ 
$('#'+name).bind("click",sayhi); 
} 
} 
var a = new Cons('name1'); 
var b = new Cons('name2'); 
var c = new Cons('name3'); 

讓我們假設name1,name2,name3都是div。現在,無論我點擊哪個div,我都會收到「hi name3」。無論點擊的div如何,私有變量都有最後存儲的值。任何幫助表示讚賞。通過javascript中的私有方法訪問私有變量

感謝

+0

可能是因爲'sayhi'是全球性的,'.bind(「click」,sayhi);'在創建三個對象後的某個時間被調用。但是要確定地知道,你必須糾正/澄清這個聲明:'attEvents(){$('#'+ name).bind(「click」,sayhi);}'它在做什麼? – 2012-03-20 10:42:15

+0

我的錯誤,attEvents只會將事件附加到div。它將在Cons()的末尾被調用。是的sayhi在全球範圍內。謝謝您的幫助。即使定義了函數,也不知道應該使用var。非常感謝 :) – 2012-03-20 11:02:47

回答

2
sayhi = function() { 
    alert(pvar1); 
} 

如果你定義它不var關鍵字,然後把它定義爲一個全球性的。因此sayhi指的是定義爲最後一個的函數。使用

var sayhi = function() { 
    alert(pvar1); 
} 

var pvar1 = "hi "+name, 
    sayhi = function() { 
     alert(pvar1); 
    }; 

注意逗號。或者真正的jQuery風格

$('#'+name).bind("click", function() { 
    alert(pvar1); 
});