分享变量的问题

时间:2013-05-14 17:29:27

标签: javascript jquery

首先,我已经点击了这些功能:

$('#bodyHVAC a#zMaps').one('click', function(){
    appendZoneMapStuff(globalPaths.mallName, function(){
        //console.log('appendZoneMapStuff');
        setTimeout(function(){
            getPathToUnits(function(){
                setTimeout(function(){
                    setupRoof('roofMrtu', function(){
                        //console.log('setupRoof');
                    });
                }, 500);
            });
        }, 0);
    });
});

我这样设置,以便函数一个接一个地运行,但它们似乎并不总是这样做。

我有这个全局变量:

var AMnamePathObj = {};

为简单起见,我们假设getPathToUnits()的代码是:

function getPathToUnits(callback){
    AMnamePathObj = {lookin: "good"};
    console.log(AMnamePathObj);
    if (callback)
        callback();
}

setupRoof()的代码是:

function setupRoof(){
    console.log(AMnamePathObj);
    if (callback)
        callback();
}

但是当setupRoof()中的console.log运行时,我正在获取[object object],即使AMnamePathObj是一个全局变量!我甚至不想将AMnamePathObj用作全局变量,但我不知道如何将AMnamePathObj的信息传递给另一个函数。

1 个答案:

答案 0 :(得分:1)

[object Object]是JavaScript中对象的默认字符串表示形式。如果您期望AMnamePathObj的有用描述,您应该给它一个toString函数,例如:

var foo = {
  name: "Steve",
  toString: function() {
     return this.name;
  }
};
console.debug(""+foo);

与:比较:

console.debug(""+{});

因此能够看到有问题的变量并没有错。