<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>