0

アプリで次の構造を使用しようとしています: https://gist.github.com/jonnyreeves/2474026

コンストラクター内にコールバックを登録しようとしています。jquery を使用して例を作成しました。実際にはリーフレット マップですが、違いは問題になりません。

function Person() {
    this.name = "abc";

    $("#something").onSomeEvent(function() {
        this.name = "cde";
    });
}

コールバック内でオブジェクト プロパティ名を適切に参照するにはどうすればよいですか?

4

3 に答える 3

3

次のようなものを使用できます。

function Person() {
    this.name = "abc";
    $("#something").onSomeEvent(function() {
        this.name = "cde";
    }.bind(this));
}
于 2013-08-23T11:20:43.000 に答える
2
   function Person() {
        var self = this;
        self.name = "abc";
        $("#something").onSomeEvent(function() {
            //this is right if you need
            self.name = "cde";
        });
    }

$('#someting') を右thisで使用できます。

bind を使用して問題を解決する場合、コールバックでこれは間違っています。

于 2013-08-23T11:24:18.733 に答える
1

bind古い IE または jquerys ではサポートされていない を使用します。proxy

function Person() {
    this.name = "abc";

    $("#something").onSomeEvent(function() {
        this.name = "cde";
    }.bind(this));
}


function Person() {
    this.name = "abc";

    $("#something").onSomeEvent($.proxy(function() {
        this.name = "cde";
    },this));
}
于 2013-08-23T11:23:58.143 に答える