JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了javascript – Function和Function.prototype之间的区别大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
根据 this,函数依次从Function.prototype继承Function和Function:

那么Function.prototype有什么意义呢?为什么不将其属性移动到Function并让Function.prototype未定义?函数将从Function派生而来.

对象等同样如此.

解决方法

你松散地引用了MDN.它实际上说的是:

请注意,在MDN页面上,上面句子中的初始单词“function”是大写的,但仅仅因为它位于句子的开头,而不是因为它指的是JS对象Function.它指的是声明为function(){}的常规旧函数.

请记住,MDN是由凡人写的.我希望他们不使用“继承”和“继承”这两个词,更不用说“派生”了. JS严格意义上没有继承的概念.如果你使用这个术语,你最终会让自己感到困惑. JS拥有的是与对象相关的原型.访问对象上的属性时,如果找不到,则查阅原型.如果没有在那里找到,因为原型也是带有原型的对象,所以原型的原型被咨询,依此类推.

因此,上面的句子最好写成“函数对象具有原型Function.prototype”.

除了Function.prototype是Function的属性之外,JS Function对象不直接与Function.prototype相关联,并且由于Function对象本身就是一个函数,因此它本身具有Function.prototype作为其原型.无论在功能上可能存在或不存在哪些属性,或者由您挂起,都与原型链无关,并且不会被任何人“继承”.

当你执行(function(){}).call()时,首先在函数对象本身上查找call属性/方法;如果它不存在,就像通常不存在那样,那么当声明函数时,它会被内部分配的原型查找,即Function.prototype.如果没有在Function.prototype上,你还会在哪里放置调用或应用等方法?除了Function.prototype之外,您还会将原型自动分配给其他函数?

另外,请注意Function.call将正确解析为内部调用函数.为什么?不是因为那是调用的地方,或者因为那是常规函数“继承”调用的地方,而是因为,正如我之前提到的,函数本身就是一个函数,因此具有原型Function.prototype,可以找到调用在其原型链上.

X.prototype是X上的一个属性,用作使用X作为构造函数创建的对象的原型.因此,要将正确的原型分配给使用Function作为构造函数创建的对象(其中包含声明为函数x(){}的函数),原型必须作为Function上的prototype属性存在.

大佬总结

以上是大佬教程为你收集整理的javascript – Function和Function.prototype之间的区别全部内容,希望文章能够帮你解决javascript – Function和Function.prototype之间的区别所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: