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