从ajax回调函数调用方法更优雅的方法

时间:2014-08-31 15:51:09

标签: javascript ajax object

我的javascript命名空间有问题。

我想从ajax回调函数调用secondMethod,但我不知道如何引用它。 我已经这样做了。但是变量thisReference在我看来很尴尬。整个建筑难以阅读。

所以我在那里寻求帮助,并回答如何更好地重写它。

var testObject = new TestObject();
testObject.firstMethod("hello world!");

function TestObject() {
    var thisReference = this;

    this.firstMethod = function(firstParam) {
        ajaxFunc(firstParam, function(ajaxResult) {
            thisReference.secondMethod(ajaxResult);
        });
    };

    this.secondMethod = function(secondParam) {
        alert("secondMethod " + secondParam);
    };

}

function ajaxFunc(hello, callBack) {
    callBack(hello);
}

非常感谢。

Ondra

1 个答案:

答案 0 :(得分:0)

像你正在做的事情是一种常见的做法。使用:

var that = this;

或:

var self = this;

是保持原始范围的通用名称。

另一个选项(我更喜欢)是将this对象绑定到您正在调用的方法,以便您可以在回调中访问它。这看起来像这样:

this.firstMethod = function(firstParam) {
  ajaxFunc(firstParam, function(ajaxResult) {
    this.secondMethod(ajaxResult);
  }.bind(this));
};

希望有所帮助。