gpt4 book ai didi

Javascript - 克隆原型(prototype)函数

转载 作者:行者123 更新时间:2023-12-02 14:57:03 27 4
gpt4 key购买 nike

我想修改外部库的原型(prototype)函数,以便在调用该函数之前执行一些代码。我想克隆该函数,然后将其替换为新函数,如下所示:

请注意,我正在使用 another question 中找到的克隆函数。

这是一个简化的示例:

var oldFunction = anObject.aFunction.clone();
anObject.aFunction = function(a, b, c) {
if (a > b) {
return;
} else {
oldFunction(a, b, c);
}
}

Function.prototype.clone = function() {
var that = this;
var temp = function temporary() { return that.apply(this, arguments); };
for(var key in this) {
if (this.hasOwnProperty(key)) {
temp[key] = this[key];
}
}
return temp;
};

但是,这样做后,oldFunction 似乎失去了对 this 的所有原始引用。

有解决办法吗?

最佳答案

我认为您不需要克隆该函数,只需保留对它的引用即可。或者更准确地说,使用正确的 this 绑定(bind)创建函数的副本。

var oldFunction = anObject.aFunction.bind(anObject);
anObject.aFunction = function(a, b, c) { ... };

bind使用第一个参数指定的 this 创建给定函数的副本。它还可以用于绑定(bind)参数。

关于Javascript - 克隆原型(prototype)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35728158/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com