实例对象的隐式原型等于构造函数的显式原型(fn.__proto__==Fn.prototype)
访问一个对象的属性时,先在自身属性中查找,找到返回;
如果没有,在沿着__proto__这条链向上查找,找到返回;
如果最终没有找到,返回undefined
原型链本质上是一个隐形原型链
作用:查找对象的属性
构造函数/原型/实例对象的关系(图解)
function Foo() 等于var Foo=new Function()
Function=new Function()
所有函数的__proto__都是一样的,因为他都是new自己(Function)产生的===》》》
(所有函数的隐式原型都指向Function的显式原型)
实例对象的隐式原型等于构造函数的显式原型(fn.__proto__==Fn.prototype)
1.函数的显示原型指向的对象默认是空的Object实例对象(但Object除外)
2.所有函数都是Function的实例(包含Function)
3.Object的原型对象式原型链的尽头。
原型链属性问题:
读取对象属性时:会自动查找原型链
设置对象的属性时:不会查找原型链,如果当前对象没有其属性,直接添加其属性并设置值
方法一般定义在原型中,属性一般通过构造函数定义在对象本身上