JS对象方法调用无法从回调中工作

时间:2014-02-25 09:15:55

标签: javascript object callback prototype ajaxform

我对原型JS编码和回调有一个小问题。它看起来不能正常工作。

这是我的样本:

var hl = new HeaderLogin;
hl.drawPanel();

var HeaderLogin = function(elem) {
    this.init = true;
    this.jsvh    = JSViewHandler.getInstance();
};


HeaderLogin.prototype.drawPanel = function() {
    var self = this;
    ...
    this.jsvh.get({
        ...
        'callback': function(rsp, templates) {
            ...
            $('#jsview_user_login_form').ajaxForm({success: asd});
        }
    });
    function asd(rspJSON, statusText, xhr, $form) {
        self.showResponse(rspJSON, statusText, xhr, $form);
    }
};

HeaderLogin.prototype.showResponse = function(rspJSON, statusText, xhr, $form) {
    if (typeof this.init === 'undefined') {
        alert('not an object');
    }
    ...
}

我必须在发送表单后调用showResponse函数,但如果我使用{success: self.showResponse},则init将不存在。它看起来像一个静态调用,我无法从构造函数中访问任何变量。如果我创建一个本地asd函数并将其用作成功回调,showRespons将知道构造函数变量。

我不想使用这个额外的功能,如果你有任何关于这个问题的解决方案,请告诉我!

非常感谢! :)

SOLUTION:

成功:self.showResponse.bind(自我)

1 个答案:

答案 0 :(得分:0)

我很长时间没有这样做,但你可以试试

'callback': function(rsp, templates) {
    ...
    var s = self;
    $('#jsview_user_login_form').ajaxForm({success: s.showResponse});
}