Способ написания классов на JavaScript уже обсуждался ранее. Но частные реализации не обсуждаются. Прочтите эту статью.
Мы знаем, что суть реализации приватных свойств в JS — это var + замыкание. следующее
Скопируйте код кода следующим образом:
функция Person(n, a){
// публичный
это.имя = п;
// частный
вар возраст = а;
this.getName = функция(){
вернуть это.имя;
}
this.getAge = функция(){
возвратный возраст;
}
}
Тест заключается в следующем: Age является закрытым и не может быть получен с помощью оператора точки. Вместо этого можно использовать только метод getName.
Скопируйте код кода следующим образом:
вар p = новый человек ('джек', 23);
console.log(p.age); // не определено
console.log(p.getAge()); // 23
В вышесказанном нет ничего удивительного, давайте воспользуемся функцией инструмента, чтобы реализовать это ниже.
Скопируйте код кода следующим образом:
/**
* @param {String} имя класса
* @param {Function} classImp
*/
функция $class(имякласса, classImp){
функцияclazz(){
if(typeof this.init == "функция"){
this.init.apply(это, аргументы);
}
}
classImp.call(clazz.prototype);
окно [имя класса] = clazz;
}
написать класс
Скопируйте код кода следующим образом:
$class('Человек', функция(){
// Здесь определяются частные свойства
вар возраст = '';
this.init = функция (n, а) {
//Общие свойства навешиваются на это и инициализируются.
это.имя = п;
// Инициализация частного свойства
возраст = а;
};
this.getName = функция(){
вернуть это.имя;
};
this.getAge = функция(){
возвратный возраст;
}
});
новый объект экземпляра
Скопируйте код кода следующим образом:
вар p = новый человек ('джек', 23);
console.log(p.name); // Общий для jack, для его получения можно использовать оператор точки
console.log(p.age); // неопределенное частное значение невозможно получить с помощью оператора точки
console.log(p.getAge()); // 23 Частный возраст можно получить только через общедоступный метод getAge.