mozilla

Compare Revisions

Object.prototype.__proto__

Change Revisions

Revision 417951:

Revision 417951 by Sheppy on

Revision 434483:

Revision 434483 by Brettz9 on

Title:
__proto__
__proto__
Slug:
Web/JavaScript/Reference/Global_Objects/Object/proto
Web/JavaScript/Reference/Global_Objects/Object/proto
Tags:
"NeedsJSVersion", "Object"
"NeedsJSVersion", "Object"
Content:

Revision 417951
Revision 434483
n11      An Object's <code>__proto__</code> property references the n11      An Object's <code>__proto__</code> property references the 
>same object as its internal <code>[[Prototype]]</code> (often ref>same object as its internal <code>[[Prototype]]</code> (often ref
>erred to as "the prototype"), which may be an object or <code>nul>erred to as "the prototype"), which may be an object or, as in th
>l</code> (in the case of <code>Object.prototype.__proto__</code>)>e default case of <code>Object.prototype.__proto__,</code> <code>
>. This property is an abstraction error, because a property with >null&nbsp;</code>. This property is an abstraction error, because
>the same name, but some other value, could be defined on the obje> a property with the same name, but some other value, could be de
>ct too. If there is a need to reference an object's prototype, th>fined on the object too. If there is a need to reference an objec
>e preferred method is to use <code><a href="/en-US/docs/JavaScrip>t's prototype, the preferred method is to use <code><a href="/en-
>t/Reference/Global_Objects/Object/GetPrototypeOf" title="JavaScri>US/docs/JavaScript/Reference/Global_Objects/Object/GetPrototypeOf
>pt/Reference/Global Objects/Object/GetPrototypeOf">Object.getProt>" title="JavaScript/Reference/Global Objects/Object/GetPrototypeO
>otypeOf</a></code>.>f">Object.getPrototypeOf</a></code>.
tt98    <p name="See_also">
99      Note that even <code>Object.prototype</code>'s <code>__prot
 >o__</code> property can be redefined as long as the chain leads t
 >o null:
100    </p>
101    <pre class="brush: js" name="See_also">
102var b = {};
103 
104Object.prototype.__proto__ = {
105    hi: function () {alert('hi');},
106    __proto__: null
107};
108 
109 
110b.hi();
111</pre>
112    <p class="brush: js" name="See_also">
113      If <code>Object.prototype</code>'s <code>__proto__</code> h
 >ad not been set to <code>null</code>, or had not been set to anot
 >her object whose prototype chain did not eventually lead explicit
 >ly to <code>null</code>, a "cyclic __proto__ value" TypeError wou
 >ld result since the chain must eventually lead to <code>null</cod
 >e> (as it normally does on <code>Object.prototype</code>).
114    </p>

Back to History