是什么
-
原型
js中的对象都有_proto_,指向一个对象,该对象就是原型对象,然后对象可以从原型对象上继承到属性方法 -
原型链
原型对象也是一个对象,也
有_proto_属性指向它的原型对象,这样由相互关联的原型对象构成的链式结构称作原型链 -
构造函数
构造函数有一个prototype属性指向原型对象
原型对象有constructor属性 指向构造函数
补充 :
js的对象分为函数对象与普通对象
除了Object的原型对象(Object.prototype)的__proto__指向null,其他内置函数对象的原型对象(例如:Array.prototype)和自定义构造函数的 __proto__都指向Object.prototype, 因为原型对象本身是普通对象。
为什么
- 节省内存
原型对象存放实例共有的属性方法 - 动态添加公有的属性方法
实例可以动态的获取构造函数之后添加的原型对象上的方法属性
怎么办
搞清楚这张图