Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.javascript > #23063
| Path | csiph.com!usenet.pasdenom.info!news.franciliens.net!news.muarf.org!nntpfeed.proxad.net!proxad.net!feeder1-1.proxad.net!217.188.199.168.MISMATCH!takemy.news.telefonica.de!telefonica.de!newsfeed.arcor.de!newsspool1.arcor-online.net!news.arcor.de.POSTED!not-for-mail |
|---|---|
| Content-Type | text/plain; charset="UTF-8" |
| Message-ID | <1991992.lvnxbIPBPy@PointedEars.de> (permalink) |
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
| Reply-To | Thomas 'PointedEars' Lahn <cljs@PointedEars.de> |
| Organization | PointedEars Software (PES) |
| Date | Tue, 11 Feb 2014 13:39:07 +0100 |
| User-Agent | KNode/4.11.3 |
| Content-Transfer-Encoding | 8Bit |
| X-Face | %i>XG-yXR'\"2P/C_aO%~;2o~?g0pPKmbOw^=NT`tprDEf++D.m7"}HW6.#=U:?2GGctkL,f89@H46O$ASoW&?s}.k+&.<b';Md8`dH6iqhT)6C^.Px|[=M@7=Ik[_w<%n1Up"LPQNu2m8|L!/3iby{-]A+#YE}Kl{Cw$\U!kD%K}\2jz"QQP6Uqr],./"?;=4v |
| Face | iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAGFBMVEXTxa4RFk5dUWANED8PFEfy7+MGBiW+n3ZNF/QuAAACaElEQVQ4jVXUwVOcMBQG8Dc7Rc4PUntdWV2uxjDpGaGeozOp1woar4jd5t/v9wLstMwsA/ntlxdCAgUc1hjTc9/JCZfGoo3wG3HdmdAWrIJRHe7GM/TmpY5VFefuVcAkkPbLIaN8rmPmjloyZxgyR3GuJ4K0AGtJ2htz8o7yqikm759fldQXaMpbDzjKAG+8v+AugVTOPO5DOjLvGtUYQwh0CPjnVMyGd+8/GfUB5nLKJDD2aLDh5HYyMDJGDwQIo2ZmZcKbowNmAdB/AzyFhrmF2MHRb0QJJfaAnwGB6orZhoykLzJtGwF/xpYxI1dswomiUj3gTuAIqCn/4C7cULwGNBtwMTk3Y4LfKB5YUaOKBKYtpplm7u0vip8tU1NWWyI/7XdcSuIDoMt6rVHMWT0DbjHPGqDqZVSa6zleLcUTcIKLoMv3ueJluALtAo9B302zPPlrtiVScRdCjXvVh3e3JpYa/jjkuC9N+LrBMlz/eAN4eQijX2EdLo6c5tGGHwLyHFtXk89dDGHwCVhG9T0S/j55AhRZgkMCmUQXJ49TnS1wnQDvw0eAh9ICeMmEFbCnPMFzjAvsWoEWEFdYEx+S0MoUZ1gT1wId8+AF3Bl2OoEu906AUHx5VLw/gXYg/x84loOah/2UYNrgiwSwGO7RfUzVBbx/kgpckumGOi6QirtD6gkLTitbnxNol47S2jVc2vsN5kPqaAHT8uUdAJM4v/DanjYOwmUjWznGfwB7sGtAtor5BgofDuzaRj4kSQAqDakTsKORa3Q3xKi3gE1fhl71KRMqrdZ2AWNNg/YOhQyrVBnb+i+nEg4bsDA+egAAAABJRU5ErkJggg== |
| Subject | Re: Trying to view the properties of an object |
| Newsgroups | comp.lang.javascript |
| References | <properties-20140211082627@ram.dialup.fu-berlin.de> |
| MIME-Version | 1.0 |
| Lines | 118 |
| NNTP-Posting-Date | 11 Feb 2014 13:39:46 CET |
| NNTP-Posting-Host | dea472c8.newsspool4.arcor-online.net |
| X-Trace | DXC==TWihoVSKR^PU8j_I0DN6_4IUK<Cl32<Q4Fo<]lROoRQ8kF<OcfhCO[Qce:MKiA0>UDZm8W4\YJN\YUVHKH;GI^WEEOdb:9C:^]JBNUHXQ4lN\ |
| X-Complaints-To | usenet-abuse@arcor.de |
| Xref | csiph.com comp.lang.javascript:23063 |
Show key headers only | View raw
Stefan Ram wrote:
[Citation needed]
> I am trying to view the properties of a prototype. They say
> in JavaScript everything is an object.
Dump “them”, then. You should know better than to rely blindly on such
unfounded statements.
ECMAScript implementations like JavaScript do have primitive data types [1].
> Therefore, I assume that a prototype is an object too.
Ex falso quodlibet; however, a (working) prototype must be an object, or
null, for other reasons [2].
> I started with typing this into the Firefox Web console:
>
> 0 . __proto__ . __proto__
__proto__ is a proprietary property. The standards-compliant way to
determine the prototype of an object is Object.getPrototypeOf(o). [3] Which
would have shown you that there are primitive data types, and that the
statement “in JavaScript everything is an object” is provably false:
| >> Object.getPrototypeOf(0)
| TypeError: 0 is not an object
> . It gave me:
>
> [object Object]
>
> . I assumed that this was an object (»everything is an
> object«), and so I wanted to list all its properties,
> but the following loop did not produce any output:
>
> for( var i in 0 . __proto__ . __proto__ )console.log( i );
Not all properties are enumerable (have the [[Enumerable]] attribute set per
ES 5.x, or do not have the [[DontEnum]] attribute set per ES 1 through 3
Final). [6][7][8]
A for-in statement iterates only over the enumerable properties of an object
*and* over the enumerable properties it inherits from its prototype, in
arbitrary order. [9]
> . The next attempt, to my surprise, printed the numbers
> from 0 to 13:
You want to reconsider your learning technique as well.
> for( var i in Object.getOwnPropertyNames( 0 . __proto__ . __proto__ ))
> console.log( i );
>
> 0
> 1
> 2
> 3
> 4
> 5
> 6
> 7
> 8
> 9
> 10
> 11
> 12
> 13
Object.getOwnPropertyNames() returns a reference to an Array instance
representing an array of primitive string values, whereas each string value
is the name of a property that the object does not inherit from its
prototype. [10]
The names of the own *enumerable* properties of an Array instance include
the array indexes. [11] (However, because implementations may differ and
order is not guaranteed with for-in, you SHOULD NOT iterate over an Array in
*this* way.)
> . What I actually wanted to see was a list of all the
> well-known object prototype properties (functions) such as
>
> hasOwnProperty
> isPrototypeOf
> propertyIsEnumerable
> toLocaleString
> toSource
> toString
> unwatch
> valueOf
> watch
>
> .
Skip for-in, then.
BTW, your peculiar posting style is _not_ appreciated. [12]
__________
[1] <http://ecma-international.org/ecma-262/5.1/#sec-8>
[2] <http://ecma-international.org/ecma-262/5.1/#sec-8.6.2>
[3] <http://ecma-international.org/ecma-262/5.1/#sec-15.2.3.2>
[6] <http://ecma-international.org/ecma-262/5.1/#sec-8.6.1>
[7] <http://ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,
%203rd%20edition,%20December%201999.pdf>
[8] Ecma Interntional (2000). ECMAScript Language Specification. Edition 3
Final. <http://www.mozilla.org/js/language/E262-3.pdf> (retrieved
2002-07-22).
[9] <http://ecma-international.org/ecma-262/5.1/#sec-12.6.4>
[10] <http://ecma-international.org/ecma-262/5.1/#sec-15.2.3.4>
[11] <http://ecma-international.org/ecma-262/5.1/#sec-8.12.5>
[12] <http://PointedEars.de/faq#posting>
--
PointedEars
Twitter: @PointedEars2
Please do not Cc: me. / Bitte keine Kopien per E-Mail.
Back to comp.lang.javascript | Previous | Next | Find similar | Unroll thread
Re: Trying to view the properties of an object Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-02-11 13:39 +0100
csiph-web