原型的出现是为了解决构造函数的缺点,构造函数只能给对象添加属性,不能合理的添加方法(每次添加的方法的时候都会开辟空间)
主要是为了解决内存
任何一个构造函数都有prototype属性,它的值是一个对象,叫做原型 每一个对象天生就自带一个__proto__属性,它指向prototype这个原型
原型是一个对象,对象天生又有__proto __ 属性,所以原型也有 原型.由对象原型,原型的原型,原型的原型的原型......组成的 链式结构就叫做原型链 作用:当访问一个对象的属性和方法的时候,对象会先在其本身上找, 如果没找到就去原型上找,原型上也没找到就去原型的原型上找 .. .... 直到找到最顶端null的时候也没有找到,就返回underfined