2010-06-11 94 views
1

我正在使用爲小部件提供一些回調的第三方庫,但我不確定回調參數對象是什麼(它們沒有文檔)。轉儲對象的方法和屬性

有沒有辦法只是轉儲在JavaScript中的對象的所有屬性,然後使用alert()打印它們,也許?我只是想看看有什麼方法和屬性它們包含,

感謝

回答

4

那麼,你可以列舉使用for...in語句中的所有對象的屬性,例如:

if (typeof Object.keys != 'function') { 
    Object.keys = function (obj) { 
    var result = []; 
    for (var prop in obj) { 
     if (Object.prototype.hasOwnProperty.call(obj, prop)) { 
     result.push(prop); 
     } 
    } 
    return result; 
    }; 
} 

alert(Object.keys({foo: 1, bar: 2})); // "foo, bar"; 

但爲了調試的目的我想高度鼓勵你得到一個真正的調試器,如Firebug

隨着Console API你可以很容易地檢查飛行中的對象。

+0

請注意,'for ... in'語句不適用於像'Math'這樣的內置對象,雖然與這個問題無關,但值得了解。 http://stackoverflow.com/questions/2257993/how-to-display-all-methods-in-a-javascript-object/2258232#2258232 – 2010-06-11 22:46:17

+1

@安迪,耶幾乎所有內置對象的屬性都是不可枚舉的。 ..這種方法不處理另一個問題,臭名昭着的[JScript DontEnum Bug](https://developer.mozilla.org/en/ECMAScript_DontEnum_attribute#JScript_DontEnum_Bug)...正如我所說的,最好的辦法是使用一個像Firebug或Webkit/Chrome Developer工具的工具......簡單地說:'console.dir(object);' – CMS 2010-06-11 22:51:32

+0

@CMS:有趣的bug,我不知道!我想這使得我的評論比我想象的更相關。我已經給你的答案+1了,所以我能做的最好的是給你的評論+1。我也會更新我在這個問題上的答案,使其更加完整。 – 2010-06-11 23:00:07

相關問題