JS原型与原型链
1、理解原型
1、所有的引用类型(数组、函数、对象)可以自由扩展属性(除null以外)
2、所有的引用都有一个 " proto" 属性(也叫隐式原型,它是一个普通的对象)
3、所有的函数都有一个“prototype”属性(这也叫显式原型,它也是一个普通的对象)
4、所有的引用类型,它的‘proto’属性指向它的构造函数prototype属性
5、当试图得到一个对象的属性时,如果这个对象本身不存在这个属性,那么就去它的‘proto’属性(也就是它的构造函数中prototype属性)中去寻找
2、原型链
fn的构造函数是Foo(): fn.__proto__ === Foo.prototype
Foo.prototype的构造函数是Object : Foo.prototype.__proto__ === Object.prototype
从图上来看,我们知道toString() 方法是在Object.prototype里面的,当调用的这个对象本身不存在这个方法时,他会一层一层向上找,直到找到null为止。这就是原型链的机制
标签:Foo,属性,proto,JS,原型,prototype,构造函数
From: https://www.cnblogs.com/yapirong/p/17072953.html