Как в javascript es5 и es6 сделать приватные свойства класса?

Пользователь

от catherine_wintheiser , в категории: JavaScript , 4 месяца назад

Как в javascript es5 и es6 сделать приватные свойства класса?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от gage , 4 месяца назад

@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 могут быть доступны только изнутри самого класса, но не извне.