1
我正在使用爲小部件提供一些回調的第三方庫,但我不確定回調參數對象是什麼(它們沒有文檔)。轉儲對象的方法和屬性
有沒有辦法只是轉儲在JavaScript中的對象的所有屬性,然後使用alert()打印它們,也許?我只是想看看有什麼方法和屬性它們包含,
感謝
我正在使用爲小部件提供一些回調的第三方庫,但我不確定回調參數對象是什麼(它們沒有文檔)。轉儲對象的方法和屬性
有沒有辦法只是轉儲在JavaScript中的對象的所有屬性,然後使用alert()打印它們,也許?我只是想看看有什麼方法和屬性它們包含,
感謝
那麼,你可以列舉使用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你可以很容易地檢查飛行中的對象。
請注意,'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
@安迪,耶幾乎所有內置對象的屬性都是不可枚舉的。 ..這種方法不處理另一個問題,臭名昭着的[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
@CMS:有趣的bug,我不知道!我想這使得我的評論比我想象的更相關。我已經給你的答案+1了,所以我能做的最好的是給你的評論+1。我也會更新我在這個問題上的答案,使其更加完整。 – 2010-06-11 23:00:07