ПРИМЕР
Rectangle
В данном случае ширину _witdth и высоту _height класса прямоугольник мы сделали приватными. Из-вне теперь обратится к ним будет невозможно.
Нижнее подчеркивание свойства — это некоторое соглашение, которое указывает, что свойство приватное. При этом чаще всего все свойства делают приватными с заредким исключением. А для того, чтобы получать доступ к эти свойствам (т.е. получить или изменять) создаются get и set.
В данном случае вызывая этот get — мы просто вернём ширину этого объекта.
В случае set мы можем просто присвоить новое значение, либо сделать дополнительные какие-то действия.
В нашем случае ширина прямоугольника не может быть отрицательной, потому мы делаем проверку — если полученное значение аргумента меньше или равняется нулю, то тогда ширине мы присваиваем единицу, чтобы значение не было отрицательным, в обратном случае мы ширине просто присваиваем тот аргумент, который получаем из-вне.
class Rectangle {
private _width;
private _height;
constructor(w, h){
this._width = w;
this._height = h;
}
calcArea() {
return this._width + this._height;
}
calcPerimeter(){
return (this._height + this._width)*2;
}
}
Как видите данные, в данном случае, у нас высота является приватной и для неё мы не сделали get и set и поэтому работать мы с ней напрямую мы можем только внутри самого класса. При этом, если мы попробуем изменить ширину на (пример -2), то отработает set и мы увидим значение равное 1.
const rect = new Rectangle (5,10);
rect.width = -2;
Если явно не указывать модификатор доступа, то по умолчанию он устанавливается как public. Но хорошей практикой является указывать его явным. При этом обратите внимание, из вне мы не могли обращаться к высоте _height и ширине _width напрямую, но внутри класса, внутри метода, который считает периметр мы спокойно это можем сделать.