如何获得Bar实例?

时间:2011-04-11 07:52:43

标签: jquery

我有一个Bar类:

function Bar() {
    this.myMethod = function() {
        $.ajax({
            ...,
            success: function(msg){
                // I can't get Bar instance with 'this'
            }
        });
    }
}

如果ajax成功,我想对Bar实例做一些事情。我该怎么办?为ajax调用之外的实例创建var?

2 个答案:

答案 0 :(得分:4)

function Bar() {
    var self = this;
    this.myMethod = function() {
        $.ajax({
            ...,
            success: function(msg){
                //Use self here.
            }
        });
    }
}

答案 1 :(得分:1)

您可以像Alex建议的那样使用变量,也可以创建包含闭包的包装函数:

[...]
this.myMethod = function () {
   $.ajax({
            ...,
            success: (function (context) {
              return function(msg){
                //Use context here.
              }
            }(this))
        });

   }
[...]

但是,如果你想保持简单,我会选择亚历克斯的建议,因为更明显的是发生了什么。