**
Person.prototype.constructor == Person;
person1.__proto__ == Person.prototype;
person1.constructor == Person;
第一篇
1. 实例的构造函数属性(constructor)指向构造函数。eg: Person1.constructor == Person
2. 凡是通过new Function()创建的对象都是函数对象,其余对象都是普通对象。
3. 每当定义一个对象的时候,对象中总会包含一些预定义的属性,其中每个函数对象都包含一个prototype属性,这个属性指向函数的原型对象。
4. 总结:每个对象都有 _proto_ 属性,但是只有函数对象才有prototype属性。
5. 原型对象,顾名思义,就是个普通对象。Person.prototype 就是原型对象。
6. Person.prototype.constructor == Person; //在默认情况下,原型对象的constructor属性是个指针,指向prototype属性所在的Person函数。
7. 结论: 原型对象(Person.prototype)是构造函数(Person)的一个实例。
8. 原型对象主要用来做继承。
9. Function.prototype,它是函数对象,但它没有prototype属性。
第二篇
1. JS在创建对象时,都会有一个 _proto_ 的内置属性,用于指向创建它的构造函数的原型对象。eg: person1._proto_ == Person.prototype;
2. 创建对象的构造器有Object,Array,Date,Function。
3. Object.prototype._proto_ == null ; //null处于原型链的顶端
4. 一个普通对象的构造函数是Object。
第三篇
1. 所有的构造器都来自于Function.prototype,包括根构造器Object和自身Function。所有构造器都基础了Function.prototype的属性和方法,比如bind,apply,call,length。
2. Function.prototype._proto_ === Object.prototype; 也继承了Object.prototype上的所有方法,比如toString(),valueOf(),hasOwnProperty。
构造器来自于Function.prototype,Function来自于Object.prototype,Object来自于null。【到头了】
3. 所有函数对象的 _proto_ 都指向Function.prototype,但它是个空函数。
4. 原型链: