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

27 Ноя 2019 в 19:54
143 +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 Апр в 00:39
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 718 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир