知识体系第二遍回顾--原型链

**
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. 原型链: 

function Person(){}
var person1 = new Person();
console.log(person1.__proto__ === Person.prototype); // true
console.log(Person.prototype.__proto__ === Object.prototype) //true
console.log(Object.prototype.__proto__) //null
Person.__proto__ == Function.prototype; //true
console.log(Function.prototype)// function(){} (空函数)
 
var num = new Array()
console.log(num.__proto__ == Array.prototype) // true
console.log( Array.prototype.__proto__ == Object.prototype) // true
console.log(Array.prototype) // [] (空数组)
console.log(Object.prototype.__proto__) //null
console.log(Array.__proto__ == Function.prototype)// true
5. 原型和原型链是JS实现继承的一个模型, 真正实现原型链的是 _proto_ ,而不是prototype。
6. 实例和原型对象之间存在个链接,而不是实例和构造函数之间。

猜你喜欢

转载自www.cnblogs.com/Neilisme/p/9287903.html
今日推荐