1.什么是原型?
在JavaScript中原型是一个prototype对象,用于表示类型之间的关系。
原型对象的用途是为每个实例对象存储共享的方法和属性,它仅仅是一个普通的对象而已。并且所有的实力是共享同一个原型对象,因此有别于实例方法或属性,原型对象仅有一份。
每个对象都有原型(null和undefined除外),可以理解为对象的默认属性和方法。
2.什么是原型链?
JavaScript只有一种结构:对象。每个实例对象(Object)都有一个私有属性(称为__proto__)指向它的构造函数的原型对象(prototype)。该原型对象也有一个自己的原型对象(proto),层层向上直到一个对象的原型对象为null。
访问路径:
- 一直往上层查找,直到null还没有找到,则返回undefined
- Object.prototype.proto === null
- 所有从原型或更高级原型中得到、执行的方法,其中的this在执行时,指向当前这个触发事件的对象