gpt4 book ai didi

javascript - 我如何猴子修补对象的构造函数?

转载 作者:可可西里 更新时间:2023-11-01 02:40:35 25 4
gpt4 key购买 nike

我想猴子修补这个“ Controller ”对象的构造函数。但是我如何猴子修补构造函数以便我仍然可以调用原始函数?这是我试过的。

// original
function Controller() {
this._tag = 'div';
}
Controller.prototype.tag = function() {
console.log(this._tag);
}

var c = new Controller();
c.tag(); // -> 'div', as expected


// patch attempt
var original = Controller;
Controller = function() {
original.apply(this);
this._tag = 'patched'; // patch
}

var c = new Controller();
c.tag(); // no method tag, prototype appears wiped...

最佳答案

你似乎想做这样的事情:

Constructor.prototype.oldTag = Constructor.prototype.tag;

Constructor.prototype.tag = function() {/* whatever */};

现在所有实例都获得了新的 tag 方法,您仍然可以根据需要调用 oldTag(或将其放回原处)。

或者你可能想做这样的事情:

var oldConstructor = Constructor;

var Constructor = function () { /* new constructor */ };
Constructor.prototype = oldConstructor.prototype;

现在您有了一个包含所有旧方法的新构造函数。或者以上都做。只需用通俗易懂的英语说出你想做什么。

关于javascript - 我如何猴子修补对象的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8530466/

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