| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Обращение к приватной переменной из прототипа |
| Автор: InfMag 12.4.2012, 18:50 | ||||
Доброго времени суток! Подскажите, никак не могу найти решение касательно js. Давайте сразу к простому примеру:
Условие тут таково, что должны быть прототипные функции, которые будут обращаться в приватным переменным экземпляра конструктора. В данном случае this.name — это публичное свойство, но что если я не хочу чтобы можно было напрямую менять name в духе:
Как мне это преградить? Иными словами: как работать с приватными переменными из функции в прототипе? Вроде как банальная потребность. Единственное что пришло в голову: это хранить массив id экземпляров с объектами данных выше уровнем, чем конструктор, а в this.id хранить уже сам идентификатор конкретного экземпляра. Но, согласитесь, это маразм, да и к тому же поменять id многого ли стоит? |
| Автор: Aliance 13.4.2012, 10:28 | ||
|
| Автор: InfMag 13.4.2012, 14:30 |
| Aliance, смысл потерялся в данном случае, тут никакой прототипности, для каждого нового объекта — новые методы в памяти. http://javascript.ru/forum/misc/27432-obrashhenie-k-privatnojj-peremennojj-iz-prototipnojj-funkcii-2.html Вот тут вопрос свёлся к тому, что проще всего использовать приставочку _ к именам свойств, пока ещё не ввели приваты в JS. ECMA уже описали применение приватов: http://wiki.ecmascript.org/doku.php?id=strawman:private_names |
| Автор: ksnk 13.4.2012, 15:02 |
вероятно имелось ввиду setName? InfMag, protected в Javascript организовать сложно... Я простого решения не вижу, а приватные и публичные свойства естественно и непринужденно получаются из функций и переменных, объявленных в конструкторе (приватные) и свойствами объекта this, определенными в конструкторе (публичные). Добраться до приватных свойств иначе чем через специальные геттеры сеттеры нельзя не только в JS но и в любом другом языке. |
| Автор: InfMag 14.4.2012, 06:49 |
| ksnk, ну да, кому интересен живой пример с геттерами-сеттерами в конструкторе: http://forum.nodejs.ru/index.php/topic,1575.0.html Но по результатом тестов геттеры и сеттеры — жутко медленная штука, и если нужна производительность — решение не лучшее. |