规则
- 所有的引用类型(数组、对象、函数) ,都具有对象特性,即可自由扩展属性(除了"null"意外)。
- 所有的引用类型(数组、对象、函数) , 都有一个_proto_ 属性,属性值是一个普通的对象。
- 所有的函数,都有一个prototype属性,属性值也是一个普通的对象。
- 所有的引用类型(数组、对象、函数),上_proto_属性值指向它的构造函数的prototype属性值。
- 当试图得到一个对象的某个属性时,如果这个对象本身没有这个属性,那么会去它的__proto_ ( 即它的构造函数的prototype中寻找。
画原型链的图:
function Person(name) { this.name = name; } let person = new Person('lizhao');