原型
1、所有的引用类型(数组、函数、对象),都具有对象的特性,即可自由扩展属性(除‘null’外)
2、所有的引用类型(数组、函数、对象),都具有一个__proto__属性(隐式原型),属性值是一个普通的对象
3、所有的函数都有一个显式原型prototype属性,属性值也是一个普通的对象。
4、所有的引用类型(数组、函数、对象、),__proto__属性值指向它的构造函数‘prototype’属性值:obj.__proto__ === Object.prototype
当试图得到一个对象的某个属性时,如果这个对象本身没有这个属性,那么会去它的__proto__(即它的构造函数的prototype)中寻找。