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();
}

しかし、AMnamePathObj がグローバル変数であるにもかかわらず、setupRoof() で console.log を実行すると [object object] を取得しています! 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 に答える