1.每个函数(function)都有一个prototype,即显式原型属性,它是在定义函数时自动添加的,默认值是一个空Object对象(没有我们自己指定的属性或方法),但Object不满足.
2.每个实例对象都有一个__proto__,即隐式原型属性,实例对象的__proto__属性是在创建对象时自动添加的,默认值为其构造函数的prototype(显式原型)属性值.所有函数的__proto__都是一样的,因为函数都是new Function()构造器产生的.
3.实例对象的隐式原型的值为其对应的构造函数的显式原型的值.
4.我们能直接操作显示原型,但不能直接操作隐式原型(ES6之前)
5.原型链:访问一个对象的属性时,先在自身属性中查找,找到返回;如果没有,再沿着__proto__(隐式原型属性)这条链向上查找,找到返回;如果最终没有找到则返回undefined.因为原型链是沿着__proto__(隐式原型属性)查找,所以又叫隐式原型链.原型链的作用是查找对象属性(方法)的.
6.Object的原型对象是原型链的尽头.console.log(Object.prototype.__proto__);//null