Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript回调/这与require.js/objects的混淆_Javascript_Jquery_Callback_Requirejs - Fatal编程技术网

JavaScript回调/这与require.js/objects的混淆

JavaScript回调/这与require.js/objects的混淆,javascript,jquery,callback,requirejs,Javascript,Jquery,Callback,Requirejs,我尝试在我的应用程序中使用以下结构: 我尝试在构造函数中注册一些回调。我用jquery做了一个例子,实际上它是传单地图,但区别不重要 function Person() { this.name = "abc"; $("#something").onSomeEvent(function() { this.name = "cde"; }); } 如何在回调中正确引用对象属性名?您可以使用以下方法: function Person() { this.

我尝试在我的应用程序中使用以下结构:

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

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

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

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

您可以使用以下方法:

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

您可以使用以下内容:

function Person() {
    this.name = "abc";
    $("#something").onSomeEvent(function() {
        this.name = "cde";
    }.bind(this));
}
使用,这在旧的IE或jquerys中不受支持

使用,这在旧的IE或jquerys中不受支持

您可以将$(“#someting”)与右this一起使用

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

您可以将$(“#someting”)与右this一起使用


如果您使用bind解决问题,那么在回调中这是错误的。

您的解决方案与bind相比有什么好处?好处是您可以将此点用于onSomeevent范围,并根据需要使用self point to person范围。您的解决方案与bind相比有什么好处?好处是您可以将此点用于onSomeevent范围并根据您的需要使用self point to person范围。
   function Person() {
        var self = this;
        self.name = "abc";
        $("#something").onSomeEvent(function() {
            //this is right if you need
            self.name = "cde";
        });
    }