我可以重写 Javascript Function 对象来记录所有函数调用吗?

2023-11-22

我可以重写 Function 对象的行为,以便可以在每次函数调用之前注入行为,然后正常进行吗?具体来说,(尽管总体想法本身很有趣)我可以将每个函数调用记录到控制台,而不必到处插入 console.log 语句吗?然后正常的行为还会继续吗?

我确实认识到这可能会带来严重的性能问题;即使在我的开发环境中,我也不打算通常运行此操作。但如果它有效的话,这似乎是一个优雅的解决方案,可以获取正在运行的代码的 1000 米视图。我怀疑这个答案会让我更深入地了解 javascript。


显而易见的答案如下:

var origCall = Function.prototype.call;
Function.prototype.call = function (thisArg) {
    console.log("calling a function");

    var args = Array.prototype.slice.call(arguments, 1);
    origCall.apply(thisArg, args);
};

但这实际上立即进入无限循环,因为调用的行为console.log执行一个函数调用,该函数调用console.log,它执行一个函数调用,它调用console.log, 哪个...

重点是,我不确定这是否可能。

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

我可以重写 Javascript Function 对象来记录所有函数调用吗? 的相关文章

随机推荐

  • 获取通过“attr_accessor”定义的所有变量,而不覆盖“attr_accessor”

    我正在我的程序上设置一些跟踪代码 并且想知道哪些方法是通过定义的attr accessor Using TracePoint 我可以检测到什么时候attr accessor被调用 但我不知道如何让它告诉我它收到的参数 有任何想法吗 在问题标
  • 使用 python 将字典列表插入 SQL 表中

    我正在使用 python 和 sql 数据库迈出第一步 但仍然不确定要使用哪个包以及如何使用 我有一个包含大约 300k 个字典的列表 每个字典大约有 20 个键 这些字典应插入到 SQL 表中 在我看来 字典方法列表的优点是 我明确命名要
  • JUnit 测试未启动 Android 服务

    我有这个测试类来测试远程服务 public class CoreServiceBasicTest extends ServiceTestCase
  • RIA 服务与 WCF 服务

    我正在重写一个 LOB 应用程序 其架构如下 Silverlight Windows Mobile gt WCF gt 实体框架 gt 数据库 移动应用程序应该能够像 silverlight 应用程序一样执行某些操作 在这里使用 RIA 服
  • C++ 中向量是通过值还是通过引用传递给函数

    我正在用 C 编码 如果我有一些功能void foo vector
  • 如何打印保留命名空间的 groovy 节点?

    当我使用此代码输出一些 XML 时 我解析 并修改 了XmlParser XmlParser parser new XmlParser def root parser parseText feedUrl toURL text def wri
  • 单元测试 Web App 时如何模拟应用程序路径

    我正在 MVC HTML 帮助程序中测试代码 该代码在尝试获取应用程序路径时抛出错误 appropriate code that uses System IO Path to get directory that results in st
  • 如何从 FirebaseRecyclerAdapter 中排除项目

    我的代码中有这个代码populateViewHolder public void populateViewHolder final CampaignHolder viewHolder final Campaign campaign fina
  • 使用 python 创建 jpeg 缩略图

    正如标题所说 我正在寻找一种将大量图像转换为不同大小的缩略图的方法 我该如何在 python 中执行此操作 See http www pythonware com products pil index htm import os sys i
  • GDB单步执行功能(下一个)似乎不起作用

    我正在尝试调试我用 C 编写的程序 这是代码 void a void b a int main b return 0 我使用以下方法编译它 g g3 O0 o cards exe cards cpp 这是我的 GDB 会话的输出 gdb b
  • BroadcastReceiver 生命周期——静态变量

    我有一个 BroadcastReceiver 类 我声明了一些静态变量 其值在 onReceive 方法中更新 据我所知 静态变量将在 onReceive 调用中保持其值 当我丢失这些值时是否有可能 比如我的类将被卸载并重置静态变量 这些基
  • 重新排序提交

    我目前正在一个分支上工作 希望将一些提交合并到其他分支中 a b c d e f g branchA o x x x x x x x x x x master x x x x x branchB 字母表示提交 并且x是不相关的提交 然而我注
  • Redbean O/RM 将“日期”存储为 varchar(255)?

    从这段代码来看 toolbox RedBean Setup kickstartDev mysql r toolbox gt getRedBean test r gt dispense test test gt nom Test 1 test
  • ODataModel 在读取中传递“expand”参数

    我想将扩展参数传递给read因为如果我像这样调用该服务 它就不起作用 oModel1 read LinesSet expand ToCells The readAPI 等待选项图作为第二个参数 我们可以使用该属性定义任何查询urlParam
  • 使用 python setup.py Egg_info 安装 scikits.audiolab 时出错

    我正在尝试使用 pip 工具安装 scikits audiolab Pip 似乎运行命令python setup py egg info来自 scikits audiolab 源目录 当这样做时 我收到此错误 Andrews MacBook
  • Cloud Run Build 期间未定义环境变量

    我使用 Google Cloud Run 来容器化 node js 应用程序 我通过以下方式将环境变量添加到谷歌云运行中本指南并期望在我的应用程序代码中使用它们 但 每当我运行构建 云运行构建 时 它都会向我显示process env NO
  • 静态指针是强指针吗?

    在 Objective C 中 我知道静态变量 应该 在程序的生命周期内保留其值 但如果它存储一个指针 它算作strong在ARC 我可以依赖它并确信该实例会never一旦我将其分配给静态变量 就从堆中退出 static ClassA sh
  • 如何从 pandas DataFrame 绘制热图

    这是我的数据框 jan f m a m j 2000 7 894737 22 387006 22 077922 14 5455 15 8038 3 33333 2001 3 578947 11 958763 28 741093 5 0541
  • Codeigniter时区mysql设置

    刚刚意识到为什么我的网站现在将所有日期时间变量显示为 1 小时 我第一次使用 Codeigniter 以前没遇到过这个问题 因此 我在主 index php 文件中包含以下代码 DEFAULT TIMEZONE Set the defaul
  • 我可以重写 Javascript Function 对象来记录所有函数调用吗?

    我可以重写 Function 对象的行为 以便可以在每次函数调用之前注入行为 然后正常进行吗 具体来说 尽管总体想法本身很有趣 我可以将每个函数调用记录到控制台 而不必到处插入 console log 语句吗 然后正常的行为还会继续吗 我确