front-end developer
|
||||||
1 | ||||||
Создание объектов JS22.11.2011, 15:33. Показов 2282. Ответов 8
Метки нет (Все метки)
Наткнулся на создание объекта с помощью конструктора (function):
new_obj - ссылается на новый объект.
1
|
22.11.2011, 15:33 | |
Ответы с готовыми решениями:
8
Создание списка объектов класса с заранее неизвестным именем (именем самих объектов) Создание кода из строк или создание произвольного количества объектов Создание объектов Создание объектов |
38 / 38 / 6
Регистрация: 16.11.2011
Сообщений: 112
|
|||||||||||
22.11.2011, 17:17 | 2 | ||||||||||
Это называется через ОПУ...)))
проще создать объект через анонимную функцию но так :
0
|
Просто любитель
|
||||||
22.11.2011, 17:18 | 3 | |||||
Спасибо за интересный пример!
Похоже это создание экземпляра безымянного класса. Насколько я понимаю, эквивалентно:
0
|
38 / 38 / 6
Регистрация: 16.11.2011
Сообщений: 112
|
|
22.11.2011, 17:26 | 4 |
в данном случае нет вообще никакой разницы что true что false вернуть.
Наверно это может быть лишь каким нибудь сигнализатором типа ожидаемого объекта и не больше...
0
|
Просто любитель
|
|
22.11.2011, 17:38 | 5 |
Заглянул в спецификацию. В упрощенном виде (потому что в неупрощённом я сам до конца не понимаю — квалификация не та) схема выглядит так:
new 1. Устанавливает переменной слева [[class]] = Object. 2. Получает прототип конструктора и 3. если прототип является объектом, присваивает его (прототип конструктора) прототипу экземпляра. Иначе присваивает прототипу экземпляра Object.prototype. 4. Вызывается конструктор с аргументами, которые ему переданы, при этом под this подразумевается экземпляр объекта. 5. Если полученное в п.4 значение — объект, то присваивает экземпляру результат п.4, иначе присваивает экземпляру результат Object(). Теперь становится понятно, что происходит при возврате необъекта (хоть true хоть ещё чего-то).
1
|
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
|
|||||||||||
22.11.2011, 18:30 | 6 | ||||||||||
Сообщение было отмечено как решение
Решение
Все верно. Если код конструктора возвращает скалярное значение ("необъект"), то оно не учитывается и возвращается экземпляр данного "класса". Если же возвращается экземпляр Object или любого другого "класса", то возвращается этот самый возвращенный объект.
Это позволяет писать конструкторы, например, standalone-объектов (существующих в единственном экземпляре):
Кстати, вполне возможно использовать конструктор по его назначению без new:
5
|
Просто любитель
|
|
23.11.2011, 21:42 | 8 |
Под прототипом я подразумевал YourClass.prototype. А вообще, ООП в javascript (как говорят программисты, знающие другие ООП языки) сильно отличается от классического, как в части наследования, так и в части инкапсуляции. Чем не знаю, поскольку на классах больше нигде не писал.
0
|
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
|
|
23.11.2011, 21:56 | 9 |
Кому интересно, прочитайте эти замечательные наблы: 38 39 40
Про JS в общем и про особенности ООП в частности. Как минимум увлекательно.
1
|
23.11.2011, 21:56 | |
23.11.2011, 21:56 | |
Помогаю со студенческими работами здесь
9
Создание объектов Создание объектов Создание объектов в Qt Создание объектов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |