JS中Function和Object的关系

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,就看工厂先造谁了。其实先做哪个都无所谓。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容