JavaScript的原型链

2022-12-04  本文已影响0人  JohnYuCN
image.png

一、基本原理解释:

  1. 所有对象(包括函数)都是通过__proto__指向某个 原型对象
  2. 所有对象(除了null)都会通过__proto__ 直接或间接的指向无名的花对象
  3. 每个函数都会额外具备一个prototype的指针,指向到那个原型对象
  4. new 函数名()产生的对象,其__proto__就会指向那个原型对象
  5. 原型对象所有的成员都会被指向它的那些对象访问到(直接或间接),所以可以认为:函数是对象的工厂。
  6. 针对原型对象的读策略是:依链查找,直到找到花对象;而写策略是:直接在对象本身进行挂载或覆盖。

二、进阶的认知:

  1. 函数自身也是对象,其__proto__ 指向的对象是一个名字为Function的函数的prototype指向的对象,所以可以认为Function是函数的工厂,可以如下描述:
var Object=new Function();
var Date=new Function();

当然,如果是我们自定义的函数本质上是如下方式定义的:

var Person=new Function();

传参和函数体如下:

var Person=new Function("name","this.name=name");
  1. JS的设计者要完成: Function自身是函数,但也是对象的目标,所以最后提出以下设想:Function对象是Function函数产生的!基于以上设想,将Function做为对象使用的__proto__指向到Function做为函数的__prototype__,完成全部的设计。
上一篇下一篇

猜你喜欢

热点阅读