|
Senior Coder
Join Date: Jun 2007
Location: Urbana
Posts: 3,452
Thanks: 9
Thanked 466 Times in 450 Posts
|
viewing non-iterable properties
the big three now support a way to iterate the new {enumerable:false} - style properties long-used by browser makers themselves.
Code:
Object.getOwnPropertyNames( anyObject );
a nicer way to access it is via a shortcut on Object, next to .keys():
Code:
Object.keys2=Object.getOwnPropertyNames;
Object.keys(window).length // 202
Object.keys2(window).length // 337
for example, user-defined "hidden" props are actually available:
Code:
o={a:1};
Object.defineProperty(o, "b", { value: 2, enumerable: false });
Object.getOwnPropertyNames(o)+''; // ["a", "b"]
Object.keys(o) // ["a"]
o.toSource() // "({a:1})" (ff)
o['b'] // 2
also, now you can easily iterate Native Methods:
Code:
Object.getOwnPropertyNames(Number.prototype)+'';
//ff: "constructor,toSource,toString,toLocaleString,valueOf,toFixed,toExponential,toPrecision"
//ch: "constructor,toString,toLocaleString,valueOf,toFixed,toExponential,toPrecision"
//ie: "constructor,toExponential,toFixed,toPrecision,toLocaleString,toString,valueOf"
Code:
Object.getOwnPropertyNames(Array.prototype)+'';
//ff: "length,constructor,toSource,toString,toLocaleString,join,reverse,sort,push,pop,shift,unshift,splice,concat,slice,indexOf,lastIndexOf,forEach,map,reduce,reduceRight,filter,some,every,iterator"
//ch: "length,constructor,toString,toLocaleString,join,pop,push,concat,reverse,shift,unshift,slice,splice,sort,filter,forEach,some,every,map,indexOf,lastIndexOf,reduce,reduceRight"
//ie: "constructor,push,concat,join,pop,reverse,shift,slice,sort,splice,toLocaleString,toString,unshift,indexOf,every,filter,forEach,lastIndexOf,map,reduce,reduceRight,some,length"
__________________
my site (updated 5/13)
STATS (2013/5) HTML5:90.2% MOB:14% IE7:0.5% IE8:8.8% IE9:11.4% IE10:6.5%
Last edited by rnd me; 12-07-2012 at 04:57 AM..
|
|