Расширение конструктора классов веб-API

Мне интересно, можно ли расширить встроенный класс Web API Request, например, для запуска немедленно вызываемой функции при создании экземпляра конструктора класса.

Так что всякий раз, когда объявляется const myRequest = new Request('http://...', {...});, запускается триггер. Например, console.info() или другая глобальная функция. Без явного вызова Request.prototype.trigger или чего-либо подобного.

Любая помощь / предлагаемые учебные материалы приветствуются. Спасибо!

Во всяком случае, это похоже на запах дизайна

Matías Fidemraizer 31.07.2018 15:29

вы хотите переопределить так называемый встроенный конструктор класса?

Jaromanda X 31.07.2018 15:31

Хорошо переопределите, но сохраните существующую функциональность, просто добавьте дополнительную функцию, которая запускается немедленно. Так что, на мой взгляд, расширить конструктор, но технически возможно. ТИЛ "дизайнерский запах" :) en.wikipedia.org/wiki/Design_smell

webstudent 31.07.2018 15:34
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете расширить его в свой собственный класс

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:

webstudent 31.07.2018 17:03

Вы можете сделать это с помощью частной функции и перезаписать свой класс 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' ) );

Спасибо за публикацию, еще один прекрасный ответ, всего на несколько секунд медленнее, чтобы быть принятым ответом. Спасибо, что нашли время. Проголосуйте! :)

webstudent 31.07.2018 17:04

Другие вопросы по теме