![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
InfMag |
|
||||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 2 Всего: 4 |
Доброго времени суток! Подскажите, никак не могу найти решение касательно js. Давайте сразу к простому примеру:
Условие тут таково, что должны быть прототипные функции, которые будут обращаться в приватным переменным экземпляра конструктора. В данном случае this.name — это публичное свойство, но что если я не хочу чтобы можно было напрямую менять name в духе:
Как мне это преградить? Иными словами: как работать с приватными переменными из функции в прототипе? Вроде как банальная потребность. Единственное что пришло в голову: это хранить массив id экземпляров с объектами данных выше уровнем, чем конструктор, а в this.id хранить уже сам идентификатор конкретного экземпляра. Но, согласитесь, это маразм, да и к тому же поменять id многого ли стоит? |
||||
|
|||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
|
|||
|
||||
InfMag |
|
|||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 2 Всего: 4 |
Aliance, смысл потерялся в данном случае, тут никакой прототипности, для каждого нового объекта — новые методы в памяти.
http://javascript.ru/forum/misc/27432-obra...-funkcii-2.html Вот тут вопрос свёлся к тому, что проще всего использовать приставочку _ к именам свойств, пока ещё не ввели приваты в JS. ECMA уже описали применение приватов: http://wiki.ecmascript.org/doku.php?id=str...n:private_names |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
вероятно имелось ввиду setName? InfMag, protected в Javascript организовать сложно... Я простого решения не вижу, а приватные и публичные свойства естественно и непринужденно получаются из функций и переменных, объявленных в конструкторе (приватные) и свойствами объекта this, определенными в конструкторе (публичные). Добраться до приватных свойств иначе чем через специальные геттеры сеттеры нельзя не только в JS но и в любом другом языке. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
InfMag |
|
|||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 2 Всего: 4 |
ksnk, ну да, кому интересен живой пример с геттерами-сеттерами в конструкторе: http://forum.nodejs.ru/index.php/topic,1575.0.html
Но по результатом тестов геттеры и сеттеры — жутко медленная штука, и если нужна производительность — решение не лучшее. |
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |