2010-06-11 65 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

相关问题