Достал из закромов свой заброшенный недописанный фреймворк, разобрал и переписываю 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);
});