JS中Function和Object的关系

2017-11-03  本文已影响0人  与鱼雨遇

JS中到底谁从属于谁?

Function instanceOf Function //true

Function instanceOf Object //true

Object instanceOf Function //true

Object instanceOf Object //true        


图为网上:

个人认为:

JavaScript引擎是个工厂。

最初,工厂做了一个最原始的产品原型。

这个原型叫Object.prototype,本质上就是一组无序key-value存储({})

之后,工厂在Object.prototype的基础上,研发出了可以保存一段“指令”并“生产产品”的原型产品,叫函数。

起名为Function.prototype,本质上就是[Function: Empty](空函数)

为了规模化生产,工厂在函数的基础上,生产出了两个构造器:

生产函数的构造器叫Function,生产k-->v存储的构造器叫Object。

你在工厂定制了一个产品,工厂根据Object.prototype给你做了一个Foo.prototype。

然后工厂发现你定制的产品很不错。就在Function.prototype的基础上做了一个Foo的构造器,叫Foo。

工厂在每个产品上打了个标签__proto__,以标明这个产品是从哪个原型生产的。

为原型打了个标签constructor,标明哪个构造器可以依照这个原型生产产品。

为构造器打了标签prototype,标明这个构造器可以从哪个原型生产产品。

所以,我觉得先有Function还是Object,就看工厂先造谁了。其实先做哪个都无所谓。

因为在你定制之前,他们都做好了。

上一篇 下一篇

猜你喜欢

热点阅读