为什么我不能 .call() Function.call?

2023-12-08

在 JavaScript 中,Function.call()可以打电话Function给定一个this值和零个或多个参数。

Function.call本身就是一个函数。所以理论上来说,Function.call应该是相同(或类似作用)的功能Function.call.call.

在V8中,情况似乎是这样:

> Function.call === Function.call.call
true

当我们打电话时Function.call(),我们得到一个匿名函数

> Function.call()
[Function: anonymous]

但是,我不能打电话.call() on Function.call.

> Function.call.call()
TypeError: undefined is not a function
at repl:1:21
at REPLServer.defaultEval (repl.js:132:27)
at bound (domain.js:291:14)
at REPLServer.runBound [as eval] (domain.js:304:12)
at REPLServer.<anonymous> (repl.js:279:12)
at REPLServer.emit (events.js:107:17)
at REPLServer.Interface._onLine (readline.js:214:10)
at REPLServer.Interface._line (readline.js:553:8)
at REPLServer.Interface._ttyWrite (readline.js:830:14)
at ReadStream.onkeypress (readline.js:109:10)

这里发生了什么?Function.call显然是一个函数 - 它不是undefined正如此错误消息所示。


简短回答:错误信息是very误导。这与您执行此操作时收到的错误消息相同

(undefined)();

更长的答案:

第二.call()正在被调用this of Function.call.

不带参数调用它会导致它调用this with undefined as the this value.

因此,你真的在​​做

Function.call.call(undefined)

这意味着你正在(比喻地)做

undefined.call()

这真的只是

undefined()

不传递任何内容(或undefined)到this的参数Function.call.call()本质上就是否定this第一个的上下文Function.call()(这只是Function本身),导致.call()被调用于undefined.

这会产生以下错误消息:undefined is not a function.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我不能 .call() Function.call? 的相关文章

随机推荐

  • Python lxml:忽略 XML 声明(错误)

    我正在尝试解析文件浏览器 Thunar 的自定义操作文件 config Thunar uca xml 与lxmlPython 模块 由于某种原因 Thunar 显然写了一个malformed declaration进入这些文件 显然 ver
  • 从编译的发行版 exe 中删除类字符串名称

    我编译我的应用程序项目的发行版本 当我使用二进制编辑器查看编译后的最终 exe 时 我可以看到我自己创建的对象的所有类名称 例如 TPolygon TRectangle 等 作为 exe 内的二进制文本数据 我如何从 exe 中删除此信息
  • 安全下载文件

    我想要一个文件夹 我们称之为文档 其中包含登录用户可以下载的文档 这些包含非常敏感的信息 如何才能最好地保护该文件夹 我有 PHP 背景 所以想知道我是否忽略了任何事情 我将使用 htaccess 保护该文件夹 并且当用户单击下载时 他们永
  • 与一个进程进行多次通信而不破坏管道?

    这不是我第一次遇到这个问题 而且它确实困扰着我 每当我使用 Python 打开管道时subprocess模块 我只能communicate正如文档所指定的那样 使用它一次 Read data from stdout and stderr u
  • Java 输入不起作用(初学者)

    由于某种原因 我的代码不接受最后一行的输入 您想订购什么 谁能告诉我我的错误是什么 它编译正确 一切顺利 我只是一个初学者 所以请告诉我基本术语 import java util Scanner import java util class
  • 添加带有 NSEventMaskKeyDown 掩码的全局监视器不会触发

    我正在开发一个 MacOS 菜单栏应用程序 它需要跟踪一些全局快捷方式 以便于调整外部显示器上的显示亮度 但是 我无法让它在任何键盘相关事件上触发处理程序 鼠标事件工作得很好 我正在使用以下代码检查可访问性 NSDictionary opt
  • 如何缓存解析的 JSON 以供离线使用

    我已经成功解析了 JSON 但现在我想缓存它以供离线使用 即使互联网不可用 如果有任何新条目出现 我也想缓存它 缓存数据的最佳选择是什么 SharedPreferences or SQLite database 这是我的代码 我用它来解析
  • Eclipse CDT 自动包含共享库

    我正在 Eclipse 中工作 Helios Service Release 1 使用 Eclipse CDT 使用 g 进行编译 我刚刚开始尝试在我的项目中使用共享库 但遇到了一个小问题 我有三个项目 A B 和 C A 和 B 都是共享
  • 是否可以用javascript或css实现overflow:ellipsis的效果?

    我想展示 when overflow发生 但遗憾的是在CSS中只有overflow hidden这接近但不完全是我想要的 可以实施吗 text overflow ellipsis See http www quirksmode org cs
  • 运行时错误 2448 您无法为此对象赋值

    我在用大卫 W 芬顿对此问题的回答尝试允许用户在单击控件时打印报告 但我收到以下错误消息 runtime error 2448 you cannot assign a value to this object 触发错误的代码行是 Me tx
  • 如何在grails中为createCriteria编写from和to日期的子句?

    我想使用以下代码获取两个日期之间的结果 def c TestCase createCriteria resultss c list like testStatus Dummy and between testTime date1 date2
  • 沿任一轴翻转 UIImage

    我正在尝试创建一种沿 X 轴 Y 轴或两者翻转 UIImage 的方法 我一直在接近 但我的变换知识还不够好 无法一路到达那里 这是我到目前为止的代码 UIImage flippedImageByAxis MVImageFlip axis
  • 如何将 OpenCV C++ 代码中的帧流式传输到 Video4Linux 或 ffmpeg?

    我正在尝试使用 OpenCV 处理视频流中的帧 目标是从流中获取帧 对其进行处理 然后将处理后的帧放入新的 新鲜的流中 我已经能够使用 OpenCV 视频捕获功能成功读取流 但不知道如何使用处理后的帧创建输出流 为了进行一些基本测试 我使用
  • SCNNode子节点的总高度

    我目前正在使用以下方法来获取 a 中所有子节点的总高度SCNNode 有没有更有效 更好 更短 更快速的方法来做到这一点 CGFloat columnNode childNodes reduce CGFloat let geometry 1
  • 如何在 pygame 中绘制更详细/更平滑的图像?

    我一直在尝试进入矢量风格的艺术世界 最近我尝试使用 blit 方法对矢量图像进行位图传输 但是当我进行位图传输时 它会显示为像素化 这是图像 这是它在 pygame 中的样子 代码为 import pygame screen pygame
  • MIPS 汇编中的奇怪跳跃

    我可能在这里遗漏了一些非常明显的东西 但我已经一遍又一遍地讨论这个问题 而且我肯定被困住了 在下面的代码中 8仅当以下情况时才会递增 2 0 现在我仔细检查了两次和三次beq指令有效 例如 如果我将 lop 更改为 end2 它就会转到那里
  • Angular 2:引导之前的外部配置 - 将值传递给 AppModule

    我想从外部 json 文件配置我的 Angular 2 应用程序 In my main ts我加载配置 json getHttp get config json map response gt response json subscribe
  • 如何使行的值在两列中唯一?

    假设我有两列 A 列和 B 列 A 列是必需的 B 列是可选的 如果指定了 B 列 我想确保在其自身行之外的 B 列 简单 或 A 列 似乎更难 中找不到它的值 同样 如果 A 列发生更改 我想确保在其所在行之外的 B 列或 A 列中找不到
  • Vue Router 在启动时加载我所有的延迟加载组件

    我有一个 Vue vue 2 6 和 cli service 4 1 应用程序 其延迟加载路由器配置如下 路由器 ts const Grid gt import webpackChunkName grid views grid Grid v
  • 为什么我不能 .call() Function.call?

    在 JavaScript 中 Function call 可以打电话Function给定一个this值和零个或多个参数 Function call本身就是一个函数 所以理论上来说 Function call应该是相同 或类似作用 的功能Fu