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"