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