0

我正在开发一个 Javascript 库,我想按如下方式使用它。

var obj = new Lib().actionOne();

此调用应填充 obj 中的“transcript”和“session”成员变量。然后我想打电话:

obj.actionTwo();

它将在上一次调用中使用填充的“成绩单”和“会话”对象。

在我的图书馆下面找到。

var xmlhttp = null;

function Lib() {        
   this.transcript = null;
   this.session = null;

   return this;
} 



Lib.prototype = {

    _initRequest : function() {
        // create xmlhttp request here
    },

    _consumeService : function(callback) {
        this._initRequest();
        xmlhttp.open("GET", "THE URL", true);
        var self = this;
        xmlhttp.onreadystatechange = function(self) {
            if(xmlhttp.readyState==4 && xmlhttp.status==200 ){  
                callback.call(self);
            }
        };
        xmlhttp.send(); 
    },


    actionOne: function() {
        var connUrl = "SOME URL";   
        this._consumeService(this._actionOneCallback);      

        return this;
    },  

    _actionOneCallback : function() {
        var jsonObj = JSON.parse(xmlhttp.responseText);
        this.session = jsonObj.session
        this.transcript = jsonObj.transcript;

        this.isActionOneDone = true;
        xmlhttp = null;                 
    },

    actionTwo : function() {
        // use this.session and this.transcript
    }
}; 

问题是 actionOneCallback() 函数不会填充 'obj' 成员,尽管我将 'self' 引用传递给它。因此,当我调用 'obj.actionTwo();' 时,obj 的成员变量是未定义的。解决方法是什么?

4

0 回答 0