2012-03-20 147 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); 
});