扩展Web API类构造函数

时间:2018-07-31 13:27:05

标签: javascript html5 class oop ecmascript-6

我想知道是否有可能扩展内置的Web API类Request以在实例化类构造函数时触发立即调用的函数。

因此,每当声明const myRequest = new Request('http://...', {...});时都会触发一个触发器。例如console.log()或另一个全局函数。无需显式调用Request.prototype.trigger或类似的东西。

感谢任何帮助/建议的学习材料。 谢谢!

2 个答案:

答案 0 :(得分:1)

您可以将其扩展到自己的班级

class MyRequest extends Request{
   constructor(...args){
       super(...args);
       console.log("extended")
   }
}

或覆盖内置的请求(不好的主意)

const originalRequest = Request
Request = function(...args){
    console.log("overwrite");
   return new originalRequest(...args)
}

答案 1 :(得分:1)

您可以使用私有函数来执行此操作,并覆盖您的Request类-确实不建议这样做,因为您可以自己实现 ,因此您应该自己为其命名您知道它不是默认对象。

void function(){
  
  const request = window.Request;
  
  class Request extends request {
    
    constructor(){
    
      super( ...arguments );
      
      console.log( 'Calling mock request' );
    
    }
    
  }
  
  window.Request = Request;
  
}();

console.log( new Request( 'http:google.com' ) );