Apply your JS skills to key Mozilla projects as an MDN Fellow! http://mzl.la/MDNFellowship

mozilla

Compare Revisions

Object.setPrototypeOf()

Change Revisions

Revision 505441:

Revision 505441 by cpeterson on

Revision 510257:

Revision 510257 by Waldo on

Title:
Object.setPrototypeOf()
Object.setPrototypeOf()
Slug:
Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf
Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf
Tags:
"Reference", "Object", "Experimental", "Référence", "JavaScript", "ECMAScript6", "Method"
"Reference", "Object", "Experimental", "Référence", "JavaScript", "ECMAScript6", "Method"
Content:

Revision 505441
Revision 510257
nn15    <div class="warning">
15    <p>16      <p>
17        Mutating the <code>[[Prototype]]</code> of an object, usi
 >ng either this method or the deprecated {{jsxref("Object.prototyp
 >e.__proto__")}}, is strongly discouraged, because it is very slow
 > and unavoidably slows down subsequent execution in modern JavaSc
 >ript implementations.
18      </p>
19    </div>
20    <p>
16      The <code><strong>Object.setPrototype()</strong></code> met21      The <code><strong>Object.setPrototype()</strong></code> met
>hod sets the prototype (i.e., the internal <code>[[Prototype]]</c>hod sets the prototype (i.e., the internal <code>[[Prototype]]</c
>ode> property ) of a specified object to another object or null.>ode> property ) of a specified object to another object or <code>
 >null</code>.
n22<code>Object.setPrototypeOf(<em>obj, prototype</em>)</code>n27<code>Object.setPrototypeOf(<em>obj, prototype</em>);</code>
n38        The object's new prototype (an object or null).n43        The object's new prototype (an object or <code>null</code
 >>).
n45      Throws a {{jsxref("Global_Objects/TypeError", "TypeError")}n50      Throws a {{jsxref("Global_Objects/TypeError", "TypeError")}
>} exception if the prototype parameter isn't an object or null (i>} exception if the object whose [[Prototype]] is to be modified i
>.e., Number, String, Boolean, or undefined).>s non-extensible according to {{jsxref("Object.isExtensible")}}.&
 >nbsp; Does nothing if the prototype parameter isn't an object or 
 ><code>null</code> (i.e., number, string, boolean, or undefined).&
 >nbsp; Otherwise, this method changes the <code>[[Prototype]]</cod
 >e> of <code>obj</code> to the new value.
46    </p>
47    <p>51    </p>
48      <code>Object.setPrototypeOf()</code> is in the latest ECMAS52    <div class="warning">
>cript 6 standard draft. The old {{jsxref("Object.proto", "obj.__p 
>roto__")}} property is a non-standard property and has been depre 
>cated from the latest ES6 draft, but all the modern browsers (inc 
>luding IE11 preview version) have already implemented it. 
53      <p>
54        Mutating the <code>[[Prototype]]</code> of an object is, 
 >by the nature of how modern JavaScript engines optimize property 
 >accesses, a very slow operation.&nbsp; If you care at all about p
 >erformance, you should never mutate the <code>[[Prototype]]</code
 >> of an object, either using this method or using {{jsxref("Objec
 >t.setPrototypeOf")}}.&nbsp; Instead, create the object with the d
 >esired <code>[[Prototype]]</code> using {{jsxref("Object.create")
 >}}.
55      </p>
56    </div>
57    <p>
58      <code>Object.setPrototypeOf()</code> is in the latest ECMAS
 >cript 6 standard draft.
n60      Using the old and deprecated {{jsxref("Object.proto", "obj.n70      Using the old and deprecated {{jsxref("Object.proto.__proto
>__proto__")}} property, we can easily define <code>Object.setProt>__")}} property, we can easily define <code>Object.setPrototypeOf
>otypeOf</code>&nbsp;if it isn't available already:></code>&nbsp;if it isn't available already:
t72      A combination of <code>Object.getPrototypeOf()</code> and {t82      A combination of <code>Object.getPrototypeOf()</code> and {
>{jsxref("Object.proto", "obj.__proto__")}} allows to append a who>{jsxref("Object.proto.__proto__")}} permits appending a whole pro
>le prototype chain to a new prototype object:>totype chain to a new prototype object:

Back to History