原型对象:每一个对象都从原型继承属性
原型的存在
- 所有通过对象直接量创建的对象都具有同一个原型对象,通过Object.prototype获得对该原型对象的引用
- 通过new关键字和构造函数创建的对象的原型就是构造函数的prototype属性的值,当然通过new Object()创建的对象也继承自Object.prototype
- 通过Object.create()创建的对象使用第一个参数作为创建对象的原型
- 没有原型的对象为数不多,Object.prototype就是其中之一,不继承任何属性
- 所有的内置构造函数都具有一个继承自Object.prototype的原型,所以Array.prototype继承自Object.prototype,由new Array()创建的Array对象的属性同时继承自Array.prototype和Object.prototype。则一系列原型对象链接起来构成了我们所说的原型链
原型的作用
- 类继承:原型对象的属性被类的所有实例所继承,如果原型对象的值是函数,这个函数就做作为类的实例方法调用
原型的访问
- 类访问原型对象的方式:ClassName.prototype
- 类的实例访问原型对象的方式:ObjectName.constructor.prototype(ObjectName.__ proto__)