prototype就是原型(prototype是key,它的value是对象,这个对象叫原型对象)
__proto__称为隐式原型。前后有两个下划线。它对外是隐藏的,我们在程序开发过程,不会直接使用它。( __ :私有的意思)
每一个函数都有一个prototype属性
每个函数,都会有很多属性(因为函数也是对象,而对象是属性的集合),其中一定有一个prototype属性。这个属性的名字是:prototype 它的值是一个对象。
construct
一个原型对象,是一个对象,对象中有很多的属性和方法,肯定有一个叫 constructor。constructor指向这个函数本身。
_proto _
每一个对象,都有一个__proto__属性。特别的,对于函数而言,每一个函数都会有一个prototype和一个__proto__属性。并且对象的__proto__属性指向创建这个对象的函数的prototype。
/ // 对象的__proto__属性 指向 创建这个对象的函数的prototype
// let obj = {name:"wangcai"} // 通过Object创建
// // console.log(obj)
// console.log(obj.__proto__ == Object.prototype) // true
()
构造器
构造器Objbect ,Array,Function,Boolean,String ,Number
原型链
定义:如果访问一个对象的属性时,先在这个对象自己的属性中去找,如果找不到,则沿着__proto__这个属性向中找,如果__proto__这个对象中还是没有找到,就在__proto__对象的__proto__属性中去找,依次下去,这就是原型链。