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');
名前1、名前2、名前3はすべてdivです。今、どんなdivをクリックしても、私はいつも "hi name3"を得ています。プライベート変数は、クリックされたdivに関係なく、最後に格納された値を持っています。どんな助けもありがとうございます。javascriptでプライベートメソッドによってアクセスされるプライベート変数
おかげであなたはそれがグローバルとして定義されてvar
キーワードを指定せずに、それを定義した場合
おそらく 'sayhi'がグローバルで、' .bind( "click"、sayhi); 'が、3つのオブジェクトが作成された後にしばらく呼ばれるからです。しかし、あなたはこのステートメントを修正/明確にしなければならないことを確かめるために: 'attEvents(){$( '#' + name} .bind(" click "、sayhi);}'それは何ですか? –
私の間違いですが、attEventsはdivにイベントを添付します。それはCons()の終わりに呼び出されます。はい、sayhiはグローバルスコープにありました。助けてくれてありがとう。関数が定義されていてもvarを使うべきかどうかは分かりませんでした。どうもありがとう :) –