黄子涵

黄子涵对JavaScript原型的理解

原型

  1. 所有引用类型都有一个__proto__(隐式原型)属性,属性值是一个普通的对象
  2. 所有函数都有一个prototype(原型)属性,属性值是一个普通的对象(仅限函数)
  3. 所有引用类型的__proto__属性指向它构造函数的prototype

JavaScript的引用类型

对象(object,也就是一般所说的引用类型)包括:

  1. 对象(object)
  2. 数组(array)
  3. 函数(function)

验证1

引用类型是对象

image

引用类型是数组

image

引用类型是函数

image

在JavaScript中,函数也是一种对象

验证2

引用类型是对象

image

引用类型是数组

image

引用类型是函数

image

验证3

引用类型是对象

image

引用类型是数组

image

引用类型是函数

image

原型链

当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的__proto__隐式原型上查找,即它的构造函数的prototype,如果还没有找到就会再在构造函数的prototype的__proto__中查找,这样一层一层向上查找就会形成一个链式结构,我们称为原型链。

这句话可以这样理解:首先,你就是一个对象,你的鼻子高高的,也就是一种属性,可以描述为nose: '高高的'。访问这个对象的某个属性,我们可以理解为:“有一天,邻居的老奶奶看到你,看到你那高高的鼻子,说:‘你这高高的鼻子长得挺像你家......’,这时候,她有点想不起是谁,就开始回忆,首先找到你的爸爸,脑子里对比一下你这个高高的鼻子和他的像不像,如果没有,她又想一下是不是和你爷爷的一样......,然后一直找到了你的始祖,也就是Object。实际上,当然是没有这样的老奶奶的,这完全是语言设计者站在上帝的角度去设计这样一套方法。

posted @ 2022-05-19 21:36  黄子涵  阅读(17)  评论(0编辑  收藏  举报