相信大家在学习javascript的时候,都不太搞得清楚这二者之间的关联也区别。通过很长一段时间的学习,我自以为我已经搞懂了,但是昨天面试官问了一个Object.__proto__的问题,一下把我问住了。复盘后总结如下。
结论:
1. javascript一切皆对象。
2. 一切对象都有一个__proto__属性,构造函数(包括Object,Number,String,Function…)也是一个对象,构造函数的__proto__属性指向Function.prototype。
3. Object.prototype.proto ==== null //true
如图:主要看prototype和__proto__的指向就好
例子来源于overflow。下面的代码没有给出图片中Foo的原型x属性和caculate方法。
function Foo(y){
this.y = y
}
const a = new Foo(20)
const b = new Foo(30)