Every object has associated prototype, class, and extensible attributes. The subsections that follow explain what these attributes do and (where possible) how to query and set them.
The prototype Attribute
An object’s prototype attribute specifies
the object from which it inherits properties. (Review Prototypes and Inheritance for more
on prototypes and property inheritance.) This is such an important
attribute that we’ll usually simply say “the prototype of
o” rather than “the prototype attribute of
o.” Also, it is important to
understand that when
appears in code font, it refers to an ordinary object property, not
to the prototype attribute.
The prototype attribute is set when an object is created.
Recall from Prototypes that objects created from
object literals use
Object.prototype as their prototype.
Objects created with
new use the
value of the
of their constructor function as their prototype. And objects
the first argument to that function (which may be
null) as their prototype.
In ECMAScript 5, you can query the prototype of any object by
passing that object to
Object.getPrototypeOf(). There is no
equivalent function in ECMAScript 3, but it is often possible to
determine the prototype of an object
o using the expression
prototype. Objects created with a
new expression usually inherit a
constructor property that refers to the constructor function used to create the object. And, as described ...