JS原型总结

158 阅读1分钟

JS三座大山分别是:原型,this,Ajax,这篇文章就来总结一下原型的一些知识

JS公式

对象.__proto__===其构造函数.prototype

跟公理

//Object.prototype是所有对象的直接或间接原型
a.__proto__.__proto__===Object.prototype//true

函数公理

//所有函数都是由Function构造的,函数有Array,Object,Function

任意函数.__proto__===Function.prototype

还有三个容易混淆的概念,下面我来介绍一下:

混淆一

xxx的原型

  • {name:hong}的原型
  • [1,2,3]的原型
  • Object的原型

解读

Object的原型是Object.proto(√)

Object的原型是Object.prototype(×)

原因

  • [的原型]等价于[.proto]
  • 中文的原型无法区分与__proto__和prototype
  • 所以我们约定,原型默认为__proto__,只不过__proto__正好等于某个函数的prototype

混淆二

  • [1,2,3]的原型是是其构造函数.prototype,即Array.prototype
  • 又说Object.prototype是所有对象的原型

原理

  • 原型分为直接原型和间接原型
  • Array.prototype是数组的直接原型
  • Object.prototype是数组的间接原型
  • 即普通对象是直接原型,数组、函数是间接原型
a.__proto__.__proto__===Object.prototype
true

混淆三(待整理)

Object.prototype是不是根对象