根据 this,函数依次从Function.prototype继承Function和Function:

The global Function object has no methods or properties of its own,however,since it is a function itself it does inherit some methods and properties through the prototype chain from Function.prototype.

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

对象等同样如此.

解决方法

functions inherit from Function

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

function objects inherit from Function.prototype

请注意,在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,可以找到调用在其原型链上.

What’s the point of Function.prototype then? Why not move its properties to Function and let Function.prototype be undefined? Functions would be derived from Function instead.

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

javascript – Function和Function.prototype之间的区别的更多相关文章

  1. Swift Function函数

    "函数名参数名参数类型返回值类型funcsayHello->String4.多个参数funcsayHello->String{ifalreadyGreeted{returnsayHelloAgain}else{returnsayHello}}print//prints"Helloagain,Tim!"上面的在函数的调用过程中,参数里面可以带参数名称的:alreadyGreeted:true多参数之间使用”,”分开.5.多值返回funcminMax->{varcurrentMin=array[0]varcu

  2. javascript Function函数理解与实战

    小编给大家带来一片关于javascript的基础教学内容,关于Function函数的训练与理解,一起学习下吧。

  3. javascript – 构造函数的差异:var X = function(){},var X = function X(){},function X(){}

    参见英文答案>varfunctionName=function(){}vsfunctionfunctionName(){}34个我现在调试其他代码,当他在这两种模式中定义构造函数时我感到很困惑.两者之间有什么特别之处吗?还有,就像这样创建一个函数的效果.我只是看每个用例.解决方法不同的选择:1)函数未命名,因此您在MyObject.toString()中没有获得函数名称2)函数已命名,因此您在My

  4. javascript – 将此范围绑定到ES6 => function operator

    在尝试使用=>继承上下文之后ES6给我们的功能我注意到这个上下文永远不会改变.例:没有=>运算符并使用function关键字:因此,如果我们从外部调用接收函数或者只是在变量中有函数,我们怎样才能确定我们是否能够将不同的函数绑定到它或者它是否只是从某个地方继承它?

  5. ‘Firebase init’命令没有创建package.json,index.js和function文件夹

    我现在正在尝试为我的GoogleHome创建一个教程应用程序但我遇到了一些麻烦.根据thistutorial,我完成了遵循构建实现的步骤.但是在第7步之后,当前文件夹中只有’firebase.json’,所以我看不到函数文件夹,package.json和index.js.我的控制台日志如下.如果有人帮助我,我真的很高兴.提前致谢.解决方法您必须使用箭头键和空格键选择要初始化的功能–默认情况下不启用任何功能.请参阅粘贴日志中的错误消息:您还可以运行firebaseinit函数来专门初始化函数.

  6. c – 将具有所有参数的成员函数传递给std :: function

    如何从成员函数创建一个std::函数,而不需要键入std::placeholder::_1,std::placeholder::_2等–我想“保留”所有参数,只保存对象本身.我不想在这个阶段提供参数,我只想把功能对象存储在某个地方.例如,我想要使用具有全局函数和成员函数的std::vector.这很容易做到FastDelegate(fastdelegate::MakeDelegate(object

  7. javascript – .then(functionReference)和.then(function(value){return functionReference(value)}之间有区别吗?

    给定一个用于处理Promise值的命名函数a)传递命名函数handlePromise作为.then()的引用b)使用匿名或命名函数作为.then()的参数,并将命名函数handlePromise返回给Promise值作为传递给.then()的匿名或命名函数的主体中的参数.问题>模式a)和b)之间是否有差异?>如果1.的答案是肯定的,应该有什么区别考虑使用任何一种模式?

  8. javascript – Function和Function.prototype之间的区别

    为什么不将其属性移动到Function并让Function.prototype未定义?除了Function.prototype之外,您还会将原型自动分配给其他函数?不是因为那是调用的地方,或者因为那是常规函数“继承”调用的地方,而是因为,正如我之前提到的,函数本身就是一个函数,因此具有原型Function.prototype,可以找到调用在其原型链上.What’sthepointofFunction.prototypethen?

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部