https://juejin.cn/post/7255605810453217335
prototype是函数的属性(本质是一个对象),不是对象的属性。
普通函数和构造函数的prototype属性是空对象{}(其实有2个属性,一个是constructor,一个是_proto_)。
对象没有prototype属性。prototype属性有个constructor属性,指向构造函数。
无论函数还是对象都有一个__proto__属性,指向实例的类型的prototype。
函数对象的__proto__的指向Function.prototype
let foo = function(){
return 0;
}
foo() //0
console.log(foo.__proto__===Function.prototype)//true
prototype对象的__proto__指向Object的prototype,Object的prototype的__proto__指向null。person的指向Person.prototype,Object.prototype._proto_指向null
date和array对象的proto属性是谁呢?Date.prototype和Array.prototype
构造函数的原型至少包含__proto__和constructor
注:必须在浏览器环境中console实验,node中console不行。