JavaScript Callback /与require.js / objects的这种混淆

时间:2013-08-23 11:14:14

标签: javascript jquery callback requirejs

我尝试在我的应用中使用以下结构:https://gist.github.com/jonnyreeves/2474026

我尝试在构造函数中注册一些回调。我使用jquery做了一个例子,实际上它是传单映射,但区别并不重要。

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

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

如何在回调中正确引用我的对象属性名称?

3 个答案:

答案 0 :(得分:3)

您可以使用以下内容:

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

答案 1 :(得分:2)

   function Person() {
        var self = this;
        self.name = "abc";
        $("#something").onSomeEvent(function() {
            //this is right if you need
            self.name = "cde";
        });
    }

你可以使用$('#someting')和这个

如果使用bind来解决问题,在回调是错误的。

答案 2 :(得分:1)

使用旧版IE不支持的bind或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));
}