Мне интересно, можно ли расширить встроенный класс Web API Request, например, для запуска немедленно вызываемой функции при создании экземпляра конструктора класса.
Так что всякий раз, когда объявляется const myRequest = new Request('http://...', {...});, запускается триггер. Например, console.info() или другая глобальная функция. Без явного вызова Request.prototype.trigger или чего-либо подобного.
Любая помощь / предлагаемые учебные материалы приветствуются. Спасибо!
вы хотите переопределить так называемый встроенный конструктор класса?
Хорошо переопределите, но сохраните существующую функциональность, просто добавьте дополнительную функцию, которая запускается немедленно. Так что, на мой взгляд, расширить конструктор, но технически возможно. ТИЛ "дизайнерский запах" :) en.wikipedia.org/wiki/Design_smell



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете расширить его в свой собственный класс
class MyRequest extends Request{
constructor(...args){
super(...args);
console.info("extended")
}
}
или перезаписать встроенный запрос (плохая идея)
const originalRequest = Request
Request = function(...args){
console.info("overwrite");
return new originalRequest(...args)
}
Хороший! Я очень сильно над этим подумал. Большое спасибо! : +1:
Вы можете сделать это с помощью частной функции и перезаписать свой класс Request - это действительно не рекомендуется, так как если вы делаете реализацию твой собственный, вы должны название самостоятельно, чтобы вы знали, что это не объект по умолчанию.
void function(){
const request = window.Request;
class Request extends request {
constructor(){
super( ...arguments );
console.info( 'Calling mock request' );
}
}
window.Request = Request;
}();
console.info( new Request( 'http:google.com' ) );Спасибо за публикацию, еще один прекрасный ответ, всего на несколько секунд медленнее, чтобы быть принятым ответом. Спасибо, что нашли время. Проголосуйте! :)
Во всяком случае, это похоже на запах дизайна