Как получить свойство из объекта, если объект был создан через функцию? let a = function() {
name = 'bruto'
return {
logg(){console.log(name)}
}
}()
console.log(a)
Как мне получить доступ к свойству name?
Я не понимаю, оно замыкается? Ведь я могу его сменить через другие функции (если допишу их).
Так что такое это "name" и как мне повторить такое же скрытое свойство если буду создавать через "class"

27 Ноя 2019 в 19:54
172 +1
0
Ответы
1

В данном случае свойство "name" является глобальной переменной, доступной внутри функции "a". Она не замыкается внутри объекта возвращаемого функцией a. Если вы хотите получить доступ к свойству "name", можно сделать это следующим образом:

let a = function() {
name = 'bruto'
return {
logg(){console.log(name)}
}
}()
console.log(a.name); // выводит 'bruto'

Если вы хотите создать скрытое свойство аналогичное "name" при использовании класса, вы можете использовать приватное поле:

class Test {
#name = 'bruto'
logg() {
console.log(this.#name);
}
}
const b = new Test();
console.log(b.#name); // этот код вызовет ошибку, так как поле #name является приватным и недоступным извне
b.logg(); // выводит 'bruto'

В данном случае поле "#name" является приватным и доступным только внутри экземпляра класса "Test".

19 Апр 2024 в 00:39
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир