为什么我的函数代理没有在 Node 中被调用?

2023-12-12

我正在使用代理get方法很好。然后我尝试在一个函数上使用它并很快意识到我需要使用apply方法。这个简单的例子不起作用。它永远不会进入应用程序。

Node看起来支持applyhttps://node.green/#ES2015-built-ins-Proxy--apply--handler。不确定我做错了什么。

var Foo = {
  runme: function() {
    return 1;
  }
};

var Magic = {
  Foo: Foo
};

Magic.Foo = new Proxy(Object.assign({}, Magic.Foo), {
  apply: function(target, thisArg, argumentsList) {
    // never gets in here
    console.log('Proxying function call');
    console.log(target);
    return 2;
  }
});

console.log(Foo.runme()); // outputs 1
console.log(Magic.Foo.runme()); // outputs 1

我尝试了两个代理Magic.foo直接并通过Object.assign看看它是否需要成为自己的对象。两者都不起作用。


你在这里假设apply陷阱的工作原理就像get陷阱——即针对代理对象的任何属性——但它们没有。这apply当代理本身被称为函数时,陷阱就会运行。在这里,您的代理是Magic.Foo,但你从不打电话Magic.Foo()。你只需要打电话Magic.Foo.runme(),这不是代理函数。

您必须将要拦截其调用的每个函数包装在其自己的单独的函数中Proxy包装纸。

或者,您可以使用get陷阱上Magic.Foo返回一个函数,该函数对每个访问的属性具有适当的行为。

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

为什么我的函数代理没有在 Node 中被调用? 的相关文章

  • 如何检查 Node.js 中是否设置了环境变量?

    我想检查我的环境变量是否设置快递JS https www npmjs com package express服务器并根据是否设置执行不同的操作 我试过这个 if process env MYKEY undefined console log
  • Node.js+Express 随机丢弃请求,导致网关超时

    EDIT 经过一番思考 我终于找到了一些看起来可能是可靠的线索 当 Express 库当前正在使用 Node OAuth 模块执行多个出站请求 例如 到 Facebook Twitter 等 时 它无法接受传入请求 我能够通过在代码中放置大
  • Socket.IO 消息不更新 Angular 变量

    我有一个 socket io 客户端 服务器设置 并在客户端上运行 AngularJS Server js var io require socket io server io on connection function socket s
  • 如何在 ReactJs 中使用 Hooks useState 编写多行状态

    React 16 9 我知道这class component state class JustAnotherCounter extends Component state count 0 相当于使用Hooks useState functi
  • 尝试通过 knex 连接到 Mssql 服务器

    我正在尝试使用 knex 连接到远程数据库 但收到此错误 乏味已弃用默认值options encrypt将会改变自false to true 请通过false如果您想保留当前行为 请明确地表示 在node modules mssql lib
  • 操作 `posts.find()` 缓冲在 10000 毫秒后超时

    当我在本地尝试时 效果非常好 但 Heroku 在服务器部署后出现此错误 有人可以帮忙吗 message Operation posts find buffering timed out after 10000ms index js con
  • 使用继承的 ES6 React 类时未触发 componentDidMount 方法

    我试图在 React 中使用 ES6 类 并希望所有组件都继承某些方法 但是一旦我尝试扩展扩展 React Component 类的组件 componentDidMount 方法就不会触发 因此什么也不会发生被渲染 我正在使用的代码 基础组
  • Node.js 子进程

    我试图弄清楚这对于 node js 子进程来说是否是一个不错的用例 我有一款多人游戏 人们可以进行 1v1 比赛 我应该为每场比赛使用子进程吗 并不是真的需要 由于节点是基于事件的 并且单个进程将能够处理数千个这样的玩家对 您将为每个这样的
  • 基于 NodeJS 的Radio(不带 ShoutCast)

    我喜欢创建一个基于 NodeJS 的广播电台not使用ShoutCast 基于 NodeJS 的播放列表 目前我已成功将音频文件发送到浏览器 但我不知道如何创建服务器端播放列表它会持续 播放 当前歌曲 并在播放结束后重新开始播放 这就是我目
  • 从 Puppeteer 中的 page.evaluate 获取元素? [复制]

    这个问题在这里已经有答案了 我正在与Node js and 傀儡师第一次 找不到输出值的方法page evaluate到外部范围 我的算法 Login Open URL Get ul 循环每个li然后点击它 等待innetHTML要设置并添
  • 刷新后,socket.io 客户端多次侦听同一事件

    我得到了一个包含项目表的母版页 成功后表数据将不断刷新socket io与服务器的连接 单击表中的某个项目 该项目的 id 将传递到服务器 时 将使用 ajax 加载子视图 并通过侦听来自服务器的事件不断刷新该子视图 现在的问题是 通过选择
  • 如何将子集合添加到 Firestore 中的文档? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 没有关于如何在Firestore中的文档中添加子集合的文档 那么如何使用Web应用程序添加子集合 我尝试了这个但没有成功 如何使用代码
  • 如何在 Node.js 中将 HTML 转换为图像

    我需要在 Node 服务器上将 HTML 模板转换为图像 服务器将以字符串形式接收 HTML 我尝试过 PhantomJS 使用一个名为 Webshot 的库 但它不能很好地与 Flex 框和现代 CSS 配合使用 我尝试使用 Chrome
  • 规则和夏令时

    我在用着rrule https github com jakubroztocil rrule在我的数据库中创建和存储事件 一切正常 直到我发现我的重复事件与 3 月 31 日之后有一个小时的差异 在法国 这一天我们进行夏令时更改 实际上 我
  • 如何在 NodeJS 中使用 PhantomJS 模拟鼠标悬停或在页面上运行 JS 功能

    NodeJS PhantomJS 使用 Cheerio 进行内容解析 需要解析包含动态加载的div 提示 的网页 该事件可以在许多表 td 上 这是一个示例 当我将鼠标悬停在特定的 td 上时 我看到这个带有数据的橙色块 它动态加载了函数
  • socket.io 服务器的 Node.js 客户端

    我有一个正在运行的 socket io 服务器和一个带有 socket io js 客户端的匹配网页 一切正常 但是 我想知道是否可以在另一台机器上运行一个单独的 node js 应用程序 该应用程序将充当客户端并连接到提到的 socket
  • 如何使用restify上传文件

    我正在尝试使用 Restify 模块将图像文件上传到 Rest 服务器 更具体地说是 Confluence 但出现断言错误 我不确定我是否使用正确的方法将文件上传到 REST 服务器 有人能指出我正确的方向吗 这是我的尝试 var rest
  • Node.js 和 Express:异步操作后如何返回响应

    我是 Node js 新手 所以我仍然对异步函数和回调很感兴趣 我现在的难题是如何在异步操作中从文件读取数据后返回响应 我的理解是发送回复的工作方式如下 这对我有用 app get search function req res res s
  • 托管 React 应用程序和 Express 服务器 cpanel

    我是托管新手 如果有人可以非常详细地解释 这将对我有很大帮助 我有以下问题 我有前端使用react app和后端使用expressjs and mysql 我的计算机中有一个可以运行的简单应用程序 我使用本地主机启动后端和前端 它们工作完美
  • sh:1:节点:权限被拒绝

    尝试在 ubuntu 18 04 上运行此命令 npm install g pngquant bin 但我得到了这个错误 fetchMetadata sill resolveWithNewModule email protected cdn

随机推荐

  • Android HttpResponse响应代码[重复]

    这个问题在这里已经有答案了 我正在尝试获取 HttpResponse 的响应代码 没有直接获取响应代码的方法 HttpResponse getStatusLine getStatusCode 就是您正在寻找的
  • “background-attachment:fixed”的解决方法在 iOS4 中不起作用

    我正在努力获取具有固定背景图像的网页 因此当页面在 UIWebView 中滚动时图像不会移动 我发现的是 background attachment fixed不适用于 iOS4 使用 4 2 1 为了仔细检查 我已经准备了一个页面 其中包
  • setTimeOut 参数传递

    在 JavaScript 中我想使用setTimeOut 像这样的功能 最好的方法是通过匿名function设置超时 这个匿名函数将能够访问id setTimeout function showGrid id 5000 将字符串传递给set
  • 使用 Objective-C 执行 PHP 脚本

    我正在尝试执行一个 PHP 脚本来增加数据库中的字段 我的脚本正在运行 并且我目前正在使用 ASIHTTPRequest 完美地修改数据库 但我觉得我应该使用不同的方法 因为我不需要返回 这就是所谓的 HTTP POST 吗 increme
  • 批处理文件:迭代自给定日期以来修改的文件

    我想创建一个批处理文件 该文件对与某个日期以来修改的通配符 例如 jpg 匹配的每个文件执行命令 作为一个简单的示例 删除文件 尽管我的命令是自定义 不同的 2010 年 1 月 1 日或之后 该日期可以硬编码在批处理文件中 也可以作为命令
  • 使用 Ajax 实时更改数据库

    我正在建立一个网站 将其Mysql数据库中的内容打印到页面上以供用户查看 数据库的内容将不断添加 我想在页面上实时显示这些更改 而无需用户重新加载 我现在正在使用 PHP 将数据库的内容回显到页面 效果很好 只是要看到任何新的更改 必须重新
  • HTML 通过一个复选框提交多个值?

    您好 我有一个表单 允许用户检查任意数量的选项 然后点击提交 有没有办法让输入类型 复选框 提交多个值 例如现在我有
  • 标记为通过的长时间运行单元测试失败 TFS 构建 - 对象“xxx.rem”已断开连接或服务器上不存在。**

    我想利用 TFS 和 MSTest 进行回归测试 我有一些长时间运行的单元测试 10分钟以上 单元测试可以在 VS2017 内的开发人员机器上本地成功运行 TFS2017 上显示单元测试已通过 然而 构建被标记为失败 对我来说 这个问题看起
  • 是否可以阻止“powershell”以 ANSI 序列包装输出?

    I CreateProcess win32 powershell并从中读取原始字节 我发现它产生了很多看不见的字符 例如 u 1b 2J u 1b m u 1b 有什么办法可以阻止它吗 确实可以手动剥离它们 但我确实希望有其他方法 你提到p
  • 在使用 DOMDocument 函数处理之前修复 PHP 中格式错误的 XML

    我需要将来自外部源的 XML 文档加载到 PHP 中 XML 没有声明它的编码并且包含非法字符 例如 如果我尝试直接在浏览器中加载 XML 文档 我会收到类似 在文本内容中发现无效字符 的错误 并且在 PHP 中加载文件时也会收到很多警告
  • 通过adb shell pm删除domain的包

    有一个命令可以减轻 Android 手机管理包的痛苦 adb shell pm uninstall org kde necessitas example one adb shell pm uninstall org kde necessit
  • 使用 Flutter sqflite 加载 JSON1 扩展

    在我的 Flutter 应用程序中 我使用 sqflite 与本地数据库进行通信 我需要查看 JSON 数据 这JSON1 扩展将是理想的选择 然而 我不能加载扩展在 Flutter 应用程序中 使其在我的查询中可用 因为该文档适用于 C
  • 我的 htaccess RewriteRule 适用于 localhost/mysite,但不适用于 1&1 共享主机上的 mysite.com

    Solved 不幸的是 该解决方案并不令人满意 今天早上 当尝试 Wige 的建议时 令我惊讶的是 我发现预期值实际上已作为GET询问 显然 1 1 我知道他们在过去几周一直在改变他们的环境 在幕后做了一些事情 神奇地解决了我的问题 现在我
  • 删除 XSL 中的双引号

    我正在使用 XSL 1 0 我有这种 XML
  • Tcl 变量大小限制

    我正在写一个Tcl将在嵌入式设备上使用的脚本 该脚本中变量的值将来自系统上的文本文件 我担心的是 如果源文件太大 可能会导致设备崩溃 因为可能没有足够的内存来存储整个文件 我想知道是否可以限制变量的大小 以便在输入变量时不会耗尽全部内存 另
  • 长时间运行的 SELECT 查询的部分结果?

    我们正在 mysql 数据库上发出一些长时间运行的查询 上下文是离线数据分析 而不是应用程序 我们将如何进行研究取决于我们在此过程中获得的结果 能够查看 部分 结果对我们很有用当它们生成时通过 SELECT 语句 在查询完成之前 这可能吗
  • angular-cli:切换到 webpack 后环境文件替换被破坏(使用“ngject”)

    我决定为 angular cli 使用扩展的 webpack 配置 所以我运行了命令ng eject 看起来除了 Angular cli json 中指定的环境文件替换之外 一切都正常 environmentSource environme
  • 如果 wpf 应用程序没有响应,则自动重新启动

    我有一个 WPF 应用程序 偶尔会崩溃 并显示 没有响应 有没有办法检测程序是否没有响应 如果是这样 重新启动 WPF 应用程序 这将是一个临时修复 直到错误修复为止 您可以使用 Windows Vista 中引入的应用程序恢复和重新启动管
  • Angular Material 2 - 在单元测试中触发 md-checkbox 中的更改事件

    我在使用 Angular CLI 提供的测试框架设置触发 Angular 单元测试中 md checkbox 的 更改 事件时遇到问题 我有一个简单的组件 ts import Component from angular core Comp
  • 为什么我的函数代理没有在 Node 中被调用?

    我正在使用代理get方法很好 然后我尝试在一个函数上使用它并很快意识到我需要使用apply方法 这个简单的例子不起作用 它永远不会进入应用程序 Node看起来支持applyhttps node green ES2015 built ins