js中关于原型和原型链有 __proto__ 、prototype、constructor 频频出现在面试题中,但是记得多了反而容易记混。

这里简单总结下每个属性的使用场景,方便记忆。

  • 对象和函数都有 __proto__,对象的 __proto__指向构造函数的prototype,构造函数的__proto__指向 Function.prototype
  • 对象和函数都有constructor,对象的 constructor指向构造函数,构造函数的constructor指向 Function
  • 函数才有 prototype
  • 函数的prototype又是一个对象,但是 Funtion.prototype 不是对象!!!
  • 特殊记忆:typeof Function.prototype==="function"
  • Object因为O大写,可以看出本质也是一个构造函数
  • __proto__ 指向一个原型对象,构造函数.prototype.__proto__ === Object.prototype
  • 特殊记忆:Object.prototype.__proto__===null,因为Object.prototype 为js 原型链的顶端。

关于js与函数的关系,这里发现一篇文章写的很好,推荐。

发表回复