javascript - 如何用自定义函数替换javascript原型(prototype)

标签 javascript prototype

// I am trying to make a clone of String's replace function
// and then re-define the replace function (with a mind to
// call the original from the new one with some mods)
String.prototype.replaceOriginal = String.prototype.replace
String.prototype.replace = {}

下一行现已损坏 - 我该如何修复?

"lorem ipsum".replaceOriginal(/(orem |um)/g,'')

最佳答案

唯一可能的问题是你的代码被执行了两次,这会导致问题:真正的原始.replace会消失。

为避免此类问题,我强烈建议使用以下通用方法替换内置方法:

(function(replace) {                         // Cache the original method
    String.prototype.replace = function() {  // Redefine the method
        // Extra function logic here
        var one_plus_one = 3;
        // Now, call the original method
        return replace.apply(this, arguments);
    };
})(String.prototype.replace);
  • 这允许在破坏现有功能的情况下修改多个方法
  • 上下文由 .apply() 保存:通常,this对象对于(原型(prototype))方法至关重要。

关于javascript - 如何用自定义函数替换javascript原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10057931/

相关文章:

javascript - 为什么 AWS SQS 这么慢?

javascript - ReactJS setState 为空白对象不起作用

javascript - 用 jQuery 替换同一个类的链接

javascript - 我可以在 javascript 中获取原型(prototype)的所有实例吗?

javascript - javascript 中的第二个日期大于第一个日期

javascript - 通过 <style> 在 CSS 中使用 JavaScript 函数

javascript - 当我调用 this.constructor.superclass.someMethod 时,超出最大调用堆栈大小会引发异常

javascript - 如何在类声明上实现伪经典继承?

C函数原型(prototype)编译错误

javascript - 双数据集的数据操作