gpt4 book ai didi

javascript - 重写 javascript 对象属性上的函数

转载 作者:行者123 更新时间:2023-11-28 04:44:25 24 4
gpt4 key购买 nike

当 JavaScript 对象上的函数位于父对象内的另一个对象上时,如何覆盖该函数。

示例:

function TestingABC() {
this.events = { finish: function() { console.log("FINISHED"); } };
}

function TestingXYZ() {
TestingABC.call(this);
}

TestingXYZ.prototype = Object.create(TestingABC.prototype);

我如何覆盖TestingXYZ上的events.finish函数来运行父(TestingABC)代码以及我需要编写的一些新代码?

最佳答案

由于 events 对象是实例的属性,而不是原型(prototype)上的属性,因此您可以采用类似于 猴子修补 的技术,在其中存储对当前事件的引用函数,然后用一个除了执行其他操作之外还可以调用旧函数的函数覆盖当前函数。

例如

function TestingABC() {
this.events = { finish: function() { console.log("FINISHED"); } };
}

function TestingXYZ() {
TestingABC.call(this);
var superEvents = this.events;
this.events = {
finish: function () {
superEvents.finish();
doMyStuff();
}
};
}

TestingXYZ.prototype = Object.create(TestingABC.prototype);

关于javascript - 重写 javascript 对象属性上的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43507128/

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