__proto__与prototype

177 阅读1分钟
  • 所以对象(包括函数)都有隐式属性__proto__ 函数的__proto__与Function.prototype等价
 function fn(a) {
    this.a = a
    this.b = 20
    return [22, 77, 55]
  }
  console.log(fn.__proto__)
  console.log(Function.prototype)
  console.log(fn.__proto__ === Function.prototype)

image.png

普通对象的__proto__为创造这个对象的构造函数的原型对象(构造函数.prototype)

  • 在JavaScript中,我们创建一个函数A,那么浏览器就会在内存中创建一个对象B,而且每个函数都默认会有一个属性 prototype 指向了这个对象(即:prototype的属性的值是这个对象 )。这个对象B就称作是函数A的原型对象,简称函数的原型。这个原型对象B 默认会有一个属性constructor指向了这个函数A ( 意思就是说:constructor属性的值是函数A )。

普通对象是没有prototype这个属性的