Monkey-patch Promise构造函数
就像练习一样,我尝试了用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
任何人都知道如何正确地修改这样的构造函数?
我build议只写一个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"