一、基本原理解释:
- 所有对象(包括函数)都是通过
__proto__
指向某个原型对象
- 所有对象(除了null)都会通过
__proto__
直接或间接的指向无名的花对象
。 - 每个函数都会额外具备一个
prototype
的指针,指向到那个原型对象
。 - 由
new 函数名()
产生的对象,其__proto__
就会指向那个原型对象
。 -
原型对象
所有的成员都会被指向它的那些对象访问到(直接或间接),所以可以认为:函数是对象的工厂。 - 针对
原型对象
的读策略是:依链查找,直到找到花对象
;而写策略是:直接在对象本身进行挂载或覆盖。
二、进阶的认知:
- 函数自身也是对象,其
__proto__
指向的对象是一个名字为Function
的函数的prototype
指向的对象,所以可以认为Function
是函数的工厂,可以如下描述:
var Object=new Function();
var Date=new Function();
当然,如果是我们自定义的函数本质上是如下方式定义的:
var Person=new Function();
传参和函数体如下:
var Person=new Function("name","this.name=name");
- JS的设计者要完成:
Function
自身是函数,但也是对象的目标,所以最后提出以下设想:Function对象
是是Function函数
产生的!基于以上设想,将Function
做为对象使用的__proto__
指向到Function
做为函数的__prototype__
,完成全部的设计。
网友评论