javascript - 添加到 JavaScript 函数

标签 javascript function

我有一个无法修改的函数:

function addToMe() { doStuff(); }

我可以添加这个功能吗? 显然这个语法是非常错误的,但这是一般的想法......

function addToMe() { addToMe() + doOtherStuff(); }

最佳答案

您可以存储对原始函数的引用,然后使用回调原始函数的函数覆盖它,并添加您想要的功能:

var originalFn = addToMe;

addToMe = function () {
  originalFn(); // call the original function
  // other stuff
};

你可以这样做,因为 JavaScript functionsfirst-class对象。

编辑:如果您的函数接收参数,则应使用 apply将它们传递给原始函数:

addToMe = function () {
  originalFn.apply(this, arguments); // preserve the arguments
  // other stuff
};

您还可以使用带有参数的自动执行函数表达式来存储原始函数的引用,我认为它更干净一点:

addToMe = (function (originalFn) {
  return function () {
    originalFn.apply(originalFn, arguments); // call the original function
    // other stuff
  };
})(addToMe); // pass the reference of the original function

关于javascript - 添加到 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1659219/

相关文章:

javascript - 如何将对象[Table]中的数据绑定(bind)到其他对象[TimePicker]中

javascript - 如何在提交后重新加载包含包含内容的 div,甚至刷新整个页面?

function - self 更新的 Flutter 模型

function - 对 "if"功能进行故障排除

javascript - 文本点击显示(功能)

javascript - 猫头鹰旋转木马及其选项有条件

javascript - JS - 在外部函数之外声明嵌套函数

r - 如何将集合运算表达式编程为函数的参数?

c++ - 测试 C 字符串是否以后缀结尾的 C++ 函数

javascript - 指令采用同一实例的范围