2012-06-03 58 views
3

在编写JavaScript时,我经常忘记一些内置对象的属性,并且必须在mdn中查找它们,这很烦人,因为它会减慢我的工作。任何方式来遍历所有的非枚举属性?

而不是参考文档,创建一个对象并使用for ... in检查console.log()更方便。但是当涉及到非枚举属性时,即使for ... in也无济于事。

所以我的问题是,除了谷歌和文件,有没有办法检查非枚举属性?

for(var i in Object){ 
    console.log([i,Object[i]]); 
    // ["wtbind", function()] 
} 
console.log(Object.hasOwnProperty('create')); 
// true 
// Here Object.create is a non–enumerable property, 
// and I have to look it up in documents if I forget it. 
+0

你用什么浏览器进行开发?你有没有考虑'console.dir()'而不是'console.log()'? – lanzz

+0

不可枚举是否禁用使用Object.toSource();的能力? – Steve

+0

@lanzz firefox和萤火虫。我不知道有一个'console.dir()'。我试过'console.dir(Object); //显示“prototype Object {}”',但那些不可枚举的属性如Object.create没有显示出来。 – Rufus

回答

3

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames

似乎是有用的,虽然它是一个相当最近增加,显然在Opera不起作用。虽然它只列出自己的属性,但您始终可以爬上原型链。

+0

Object.getOwnPropertyNames(Object); // [“prototype”,“getPrototypeOf”,“getOwnPropertyDescriptor”,“keys”,“defineProperty”,“defineProperties”,“create”,“getOwnPropertyNames”,“isExtensible”,“preventExtensions “,”freeze“,”isFrozen“,”seal“,”isSealed“,”length“,”name“,”arguments“,”caller“],太好了!如果我想知道,'for'循环会显示它们的类型。 – Rufus

+0

而且因为我只会在开发环境中使用'Object.getOwnPropertyNames',例如。 firefox和nodeJS,Opera的问题对我来说可以。再次感谢你。 – Rufus

+0

@Rufus Ah,那么OK :)另一方面,我主要使用Opera,所以我不高兴地发现这一点;) – Imp