Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Я уж было думал что высокое искусство накостылить Очередные Единственные Труъ Классы в JS отомрёт с выходом и повсеместным распространением ES6/2015 и повсеместным же распространением TypeScript и .d.ts. — ан нет, жив курилка. И двух недель не прошло с обсуждения пропозала о приватных свойствах...
Ну да, подумаешь замедлили создание объектов на порядок, зато отладка созданных таким образом объектов будет увлекательной.
Нужно начинать с того что любая попытка реализации аспектов ООП в JS есть костыль.
function Base(){
//@protected как бы делаем метод защищенным и разделяем его с производными классами
function protectedMethod(){}
}
function SomeSpeciaFunctionality(){
this.method = function (){ // useful code
}
}
function Base(){
var _compositionInstance = new SomeSpeciaFunctionality();
function myPrivateFunction(){
_compositionInstance.method();
}
}
function DerivedClass(){
var _compositionInstance = new SomeSpeciaFunctionality();
function anotherPrivateFunction(){
_compositionInstance.method();
}
}
function SomeSpeciaFunctionality(){
this.method = function (){ // useful code
}
}
function Base(){
var _self = this;
var _compositionInstance = new SomeSpeciaFunctionality();
function myPrivateFunction(){
_compositionInstance.method.call(_self);
}
}
function SomeSpeciaFunctionality(privateMembers){
this.method = function (){ // useful code
}
}
function Base(){
var _self = this;
var _privateMembers ={
myPrivateVariable: 12
}
var _compositionInstance = new SomeSpeciaFunctionality(_privateMembers);
function myPrivateFunction(){
_compositionInstance.method.call(_self);
}
}
Protected методы в JavaScript ES5