@catherine_wintheiser
В ES5 приватные свойства класса могут быть смоделированы с помощью замыканий. Вы можете создать объект с методами, которые будут иметь доступ к переменной, которая находится внутри функции-конструктора, но которая не может быть доступна извне:
1 2 3 4 5 6 7 8 9 10 |
function MyClass() { var privateProperty = "I am private"; this.publicMethod = function() { console.log(privateProperty); } } var obj = new MyClass(); obj.publicMethod(); // "I am private" console.log(obj.privateProperty); // undefined |
В ES6 вы можете использовать синтаксис #
перед именем свойства, чтобы сделать его приватным:
1 2 3 4 5 6 7 8 9 10 |
class MyClass { #privateProperty = "I am private"; publicMethod() { console.log(this.#privateProperty); } } const obj = new MyClass(); obj.publicMethod(); // "I am private" console.log(obj.#privateProperty); // TypeError |
Приватные свойства класса в ES6 могут быть доступны только изнутри самого класса, но не извне.