1

首先,我在点击时运行了这些功能:

$('#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 的信息传递给其他函数。

4

1 回答 1

1

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

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

与之比较 :

console.debug(""+{});

所以能够看到有问题的变量没有错。

于 2013-05-14T17:37:29.753 回答