![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: нет Всего: 0 |
Что означает this здесь, почему для каждого свойства и метода его нужно писать, почему без него нельзя описать свойство или метод? |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
метод не может существовать сам по себе, он является элементом структуры класса. а какой класс (объект) подразумевается при объявлении метода? вот мы и указываем:
someobj.newmethod = function() {} - для стороннего объекта или this.newmethod = function() {} - для объекта в котором мы его объявляем Это сообщение отредактировал(а) bars80080 - 3.3.2011, 00:33 |
|||
|
||||
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: нет Всего: 0 |
Читаю здесь http://javascript.ru/tutorial/object/thiskeyword
Если следовать согласно картинке по этой ссылке: 1. Конструктор Animal инициализирует объект под названием animal. 2. После того, как инициализация объекта под названием animal прошла. конструктор Animal создал где-то в оперативной памяти ячейку с названием this которая стала ссылаться на свойства и методы конструктора под названием Animal? 3. Что вызывается если уже всё вызвалось ,если следовать согласно картинке? Расшифруйте пожалуйста те, 3 пункта из той ссылки правильно. Заранее благодарю. |
|||
|
||||
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: нет Всего: 0 |
Скажите, а сам this находится в оперативной памяти компа, где-то в ячейке? И в этот момент, когда конструктор вызвался, он сразу инициализировал объект animal выделив сразу и память для него и сразу сам конструктор с именем Animal стал указывать на любое свойство и метод класса Animal или сама конструкция this,которая лежит где-то в оперативной памяти компа и хранит адрес, стала хранит ссылку, а не конструктор стал хранить ссылку на любое свойство или метод класса? |
|||
|
||||
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: нет Всего: 0 |
Ответьте кто-нибудь.
|
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 1 Всего: 102 |
Golovastik, ты определись с вопросом. что такое this внутри класса, или же как браузеры осуществляют обработку javascript и выделяют память.
-------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 7 Всего: 401 |
Думаю, начать имеет смысл со спецификации языка (тут перевод). Спецификация, конечно, суровая, без поллитры в ней едва разберешься... но без нее понять что-либо еще труднее. У браузеров бывают свои тонкости, но в главном они стараются следовать спецификации.
А одно из лучших объяснений, что и в каком порядке создается, я видел здесь. Но действительно, это так непохоже на привычные ЯП с классами, что, к моему стыду, мне самому приходится подглядывать в шпаргалки... ) -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: нет Всего: 0 |
А если бы я просто объявил функцию со свойствами, но не создавал бы объекта, тогда вот это:
означало бы создание объекта со свойствами? Это сообщение отредактировал(а) Golovastik - 5.3.2011, 01:05 |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 7 Всего: 401 |
Да. Функция — сама по себе уже объект (с некоторыми особыми внутренними свойствами).
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: нет Всего: 0 |
Любое объявление любого объекта в JS - это конструктор?
Этот код - это описание конструктора test и одновременное его создание? |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 7 Всего: 401 |
Насколько я понимаю, можно сказать, что так. В JS нет "просто описаний", всё — объекты (кроме примитивов). Любая функция — объект, способный (потенциально) выступать чьим-то конструктором (насколько я сам понимаю;).
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
Нет. Это - конструктор объекта. Объект, к к которому будет применяться конструктор, появляется явным образом оператором new. Аргументом new идет конструктор будущего объекта. new выдает указатель на это свежесозданый объект. Просто вызвать test без оператора new - будет логическая ошибка, но не ошибка времени исполнения, так как фактически, вызов этой функции будет производится как вызов метода объекта window.
Вообще, все неописанные идентификаторы и функции автоматически становятся методами и свойствами объекта window. Это такая добрая, хотя и местами мудрая, черта JS -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |