Задать вопрос
DIITHiTech
@DIITHiTech
Fullstack javascript developer

Используете ли Вы в своих JS объектных интерфейсах нативые сеттеры/геттеры, или используете свои абстракции?

Достал из закромов свой заброшенный недописанный фреймворк, разобрал и переписываю api, выкидываю мусор для пенсионеров <IE9 под вдохновением по полной использовать современные/свежие возможности. Все никак не могу решить пытаться использовать ли встроенные аксессоры JS для "классов", или оставить так как есть - с полной своей абстракцией. Отказываться от цепочек вызов точно не хочется, значит появится избыточность и все та же абстракция, может даже большая, чем сейчас и смысл нативных аксессоры теряется. Сокрытие свойств нормально все ровно не реализовать с хранением в замыкании, так как теряется гибкость в расширении и переопределении при наследовании. Так что приватные свойства хранятся просто в спец поле __props, а публичные в params. Собственно аксессоры извне выглядят у меня вполне обычно:
new  $.Classes.Ajax().headers({"x-engine":"pitoxa/2.0"}).GET("/api/test.js").then(function(data){
        console.warn("Ajax:: complete",data);
    },
    function(error){
        console.error("Request failed with ",error);
    });
   //или так
    new  $.Classes.Ajax().set("headers",{"x-engine":"pitoxa/2.0"}).GET("/api/test.js").then(function(data){
        console.warn("Ajax:: complete",data);
    },
    function(error){
        console.error("Request failed with ",error);
    });
   //или так
    new  $.Classes.Ajax({headers:{"x-engine":"pitoxa/2.0"}}).GET("/api/test.js").then(function(data){
        console.warn("Ajax:: complete",data);
    },
    function(error){
        console.error("Request failed with ",error);
    });

Все таки лучше менять шило на мыло? или не менять- вот в чем вопрос=)
//если бы нативные аксессоры 
  var ajax=new  $.Classes.Ajax();
  ajax.headers={"x-engine":"pitoxa/2.0"};
  ajax.someProp=someValue;
  //....
  ajax.GET("/api/test.js").then(function(data){
        console.warn("Ajax:: complete",data);
    },
    function(error){
        console.error("Request failed with ",error);
    });
  • Вопрос задан
  • 199 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы