<h3>一切皆对象,他们都来自null;</h3>
<ol>
<li>每一个对象(除了null)都和另一个对象相关联,这个所谓的另一个对象就是原型;</li>
<li>不难理解,原型也是对象;</li>
<li>所有的内置构造函数都有一个继承自Object.prototype的原型;</li>
<li>Object.prototype是没有原型的对象;</li>
<li>每一个对象都从原型继承属性,直到null结束;</li>
<li>
所以我们也可以看下原型链:
<pre>
var arr1 = new Array(1,2,3);
arr1-->Array.prototype-->Object.prototype-->null; 形成链,到null结束,完美;
var date1 = new Date();
date1-->Date.prototype-->Object.prototype-->null; 形成链,到null结束,完美;
</pre>
这就是传说中的原型链;简单总结下:
<pre>
一、构造函数、原型和实例的关系
a,构造函数都有一个属性prototype,这个属性是一个对象,是Object的实例;
b,原型对象prototype里有一个constructor属性,该属性指向原型对象所属的构造函数;
c,实例对象都有一个__proto__属性,该属性也指向构造函数的原型对象;
二、prototype与_proto_的关系
a,prototype是构造函数的属性;
b,__proto__是实例对象的属性;
c,两者都指向同一个对象;
</pre>
</li>
</ol>