Javascript对象参数的分配和使用

Javascript Object parameters assignment and usage

本文关键字:分配 对象 参数 Javascript      更新时间:2023-09-26

所以我有这个JavaScript对象:

var obj = { 
    conn : null,
    first : function(thisIdentity) {
        "use strict";
        var myObj = this;
        $(document).on('click', thisIdentity, function(e) {
        e.preventDefault();
        $.ajax ({ 
            url : some value,
            // other parameters
            success : function() {
                myObj.conn = new Connection(data.user_id, "127.0.0.1:80");
            }
        });
   },
    second : function(thisIdentity) {
        "use strict";
        var myObj = this;
        $(document).on('click', thisIdentity, function(e) {
            e.preventDefault();
            $.ajax ({ 
                url : some value,
                // other parameters
                success : function() { 
                    // using myObj.conn now results in UNDEFINED or NULL
                }
            });
    }
};

现在,在第一个函数的AJAX调用中,基本上值被分配给了conn变量,并且值肯定被分配了,但当我试图在第二个函数中使用相同的值时,它会显示

myObj.cn未定义/为空

我只想知道如何为对象的属性赋值,并保留它以备将来使用?

我确实尝试在第二个函数中使用this.conn = new Connection(params);this.conn,但它仍然说this.connmyObj.conn为空。谢谢

您需要等待第一个ajax调用完成,请尝试以下操作:

var obj = { 
    conn : null,
    promise: null,
    first : function(thisIdentity) {
        "use strict";
        var myObj = this;
        $(document).on('click', thisIdentity, function(e) {
            e.preventDefault();
            myObj.promise = $.ajax({ 
                url : some value,
                // other parameters
                success : function() {
                    myObj.conn = new Connection(data.user_id, "127.0.0.1:80");
                }
            });
       });
   },
    second : function(thisIdentity) {
        "use strict";
        var myObj = this;
        $(document).on('click', thisIdentity, function(e) {
            e.preventDefault();
            if (myObj.promise) {
                myObj.promise.then(function() {
                    $.ajax({ 
                        url : some value,
                        // other parameters
                        success : function() { 
                            // using myObj.conn now results in UNDEFINED or NULL
                        }
                    });
                });
            }
        });
    }
};