强烈建议自己上代码验证一下接下来的一些结论 1.js万物皆对象,函数也是对象,Function和Object是两个函数也是对象。 2.函数都拥有显式原型(prototype)和隐式原型(proto),对象只有隐式原型。 3.显式原型指向的引用对象就是原型对象,原型对象也是对象,也拥有隐式原型;而隐式原型指向的是该函数构造函数的原型对象。 4.Function函数的原型对象的隐式原型指向了Object函数的原型对象,而Object原型对象的隐式原型指向了null。
目的:原型和原型链就是为了解决对象的继承问题 实例:声明一个函数person(拥有属性name和方法say),用它new一个实例对象student,student可以拥有自己的属性(age,sex),拥有自己的方法(run,eat),同时它想使用它父对象的属性和方法的时候,就用到了原型对象,自己原型对象上没有就向上找,所以它向上找的这个线索或者链条就是我们所说的原型链,即student原型对象的隐式原型指向的person的原型对象,如果还找不到继续向上找,即person的原型对象的隐式原型指向的Function的原型对象,如果还没有则继续向上找,即Function的原型对象的隐式原型指向的Object的原型对象,还找不到就继续,即Object的原型对象的隐式原型指向的null,到这没找到即是undefined