gpt4 book ai didi

javascript - 猴子补丁 Promise 构造函数

转载 作者:搜寻专家 更新时间:2023-11-01 00:38:25 26 4
gpt4 key购买 nike

作为练习,我尝试对 Promise 构造函数进行猴子修补,如下所示:

const pconstructor = global.Promise;
global.Promise = function (fn1) {
this.foo = 'bar';
pconstructor.call(this,fn1);
};

global.Promise.resolve = pconstructor.resolve;

然而,当我调用时出现错误

Promise.resolve();

=>

TypeError: [object Object] is not a promise

有人知道如何正确地对这样的构造函数进行猴子修补吗?

最佳答案

我建议只写一个 Promise 的子类:

const global = window; // (in browser...)


const OldPromise = global.Promise;
global.Promise = class Promise extends OldPromise {
constructor(executor) {
// do whatever you want here, but must call super()
console.log('hello, promise');

super(executor); // call native Promise constructor
}
};

Promise.resolve(); // prints: "hello, promise"

当尝试对这样的类进行猴子修补时,这会处理幕后的所有细节。

关于javascript - 猴子补丁 Promise 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43524681/

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