Я читаю книгу "Изучение JS DataStructs и алгоритмов", и в книге говорится, что "элементы" являются общедоступными в следующем классе.
class Stack {
constructor(){
this.items = []
}
}
Но, если я использую WeakMap, я могу снова сделать элементы приватными, только в примерах, учитывая, что они не используют «this», как я ожидал.
const items = new WeakMap();
class Stack {
constructor(){
items.set(this, []);
}
}
, а затем приводятся примеры кода, который выполняет такие вещи, как items.set или items.get для доступа к вещам, и это выглядит нормально, но мне было интересно, могу ли я просто сократить доступ к item.get (value) в Конструктор на «это» выглядит так:
const items = new WeakMap();
class Stack {
constructor() {
items.set(this, []);
this.stack = items.get(this, []);
push(item) {
this.stack.push(item)
}
}
Теперь я могу получить доступ к функционалу items.get () с помощью this.stack, но я НЕ уверен, что он снова станет публичным, и мне было интересно, может ли кто-нибудь помочь мне разобраться с этим?