前言: 每一个对象都有自己的原型, 而原型也是对象,也会有自己的原型,此次类推形成链式结构。称之为原型链。(原型链的终点是null)
1.原型对象
- 提到原型链我们就不得不提一下原型对象
-
1.原型对象是什么? : 任何函数在声明的时候,系统会自动帮你创建一个对象,称之为原型对象 -
2.原型对象作用? : 解决 内存浪费 + 变量污染 -
3.原型对象相关三个属性: prototype : 属于构造函数, 指向原型对象 __proto__ : 属于实例对象,指向原型对象 constructor : 属于原型对象,指向构造函数 -
4.图例:
-
5.代码: console.log( p1.__proto__.constructor )//Person console.log( Person.prototype === p1.__proto__ )//true
2.原型链的意义
-
1.原型链:每一个实例对象都有自己的原型,而他的原型也是对象,也会有自己的原型,依次类推形成链式结构,所以我们称之为原型链 -
2.实例对象访问原型链规则:就近原则 -
实例对象先访问自己的,没有就找原型的,原型也没有就找原型的原型,一直找到原型链的终点null,如果再找不到,属性则获取undefined,方法则会报错xxx is not function 对象先访问自己的,自己没有就找原型的,原型没有就找原型的原型,一直到原型链终点null.如果还找不到。 属性则获取undefined, 方法则会报错 xxx is not function
3.总结
通过这些大家应该对原型和原型链的关系有了大概的认知。我的认知就是,原型链就是一个过程,原型是原型链这个过程中的一个单位,贯穿整个原型链。