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如何,私有变量都具有最后存储的值。任何帮助表示赞赏。

谢谢

最佳答案

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);
});

关于javascript - 用javascript中的private方法访问的private变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9784896/

10-12 15:20