前言
带你快速了解原型,原型链。
一、原型
1.什么是原型
函数
都有prototype属性,这个属性指向的是一个对象,称之为原型(也称原型对象)。
原型对象也有个constructor属性指向它的构造函数。
Student类里的student()构造函数有个prototype属性其指向Student.prototype这个对象,即原型对象,通过student()构造函数实例化的对象student1有个__proto__属性,也指向Student.prototype这个原型对象。
2.隐式原型、显示原型
- 通过prototype属性指向的对象是显示对象
- 通过__proto__属性指向的对象是隐式对象:
上述的Student实例化n个对象:student1,studen2......等,其__proto__属性都指向同一个Student.prototype对象,即student1.__proto__===student2.__proto__===Student.prototype
3.原型的作用
- 存放一些属性方法,共享给实例对象使用。(即数据共享,节约内存空间)
- 实现继承
二、原型链
什么是原型链
对象都有__proto__属性,这个属性指向它的原型对象,原型对象也是对象,也有__proto__属性,指向原型对象的原型对象,这样一层层形成的链式结构成为原型链,最顶层找不到则返回null。
补充说明
在JavaScript中,函数都可以看作是Function()的实例,所以函数的构造函数是Function()。而且Function()本身自己也是函数。
Student.constructor===Function Function.constrctor===Function Object.constrctor===Function Student.__proto__===Object.__proto__===Function.__proto__===Function.prototype
总结
以上就是原型、原型链的讲解。