![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| GIK |
|
||||||
![]() Добрый человек ![]() ![]() Профиль Группа: Участник Сообщений: 985 Регистрация: 3.6.2005 Где: я только не небыв ал Репутация: 6 Всего: 14 |
Хочу глубже узнать создание своих объектоа.
В этом коде мне вроде все понятно, если что поправте. Понятно что создаются свойства и методы и обращвтся к ним видимо можно только через экземпляры (op1 = new book("Колобок", "GIK", "Блокбастер", 5); ) Как можно обратится сразу, типа var a = book.title Вставляю вот такой кусок в код,
а он выдает ругательное сообщение. Вопрос возник из-за топа созданного мною же, после чего Sardar написал такой огроменный код, в котором я до сих пор разобратся не могу. Там в часности исползуются, как я понял, свои объекты, и там есть такой кусок:
Сдесь что-есть что, я могу только наугат думать. Вроде бы обращение к объекту, но что есть prototype.wait понять не могу. Помогите плиз начинающему разобраться, а то у меня уже крыша едет, чес слово Это сообщение отредактировал(а) Aliance - 6.11.2005, 20:40 -------------------- Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!! Программирование - это не деятельнось! Программирование - это состояние души! Бог - самый крутой программист. |
||||||
|
|||||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
GIK, ты реально напрягаешь. П-О-Ж-Л-А-У-Й-С-Т-А, пользуйся кнопкой код ПРАВИЛЬНО!
Добавлено @ 20:39 А поможет тебе замечательная статья от Сардара: http://forum.vingrad.ru/index.php?showtopic=50738 |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Потому как book, это функция-конструктор, не имеет свойства title, что естественно. После запуска функции, она инициализирует новый обьект и создаёт ему свойство title, но для себя она ничего не создаёт. Поставь внутрь arguments.callee.title="свойство функции";, после первого же вызова функции(создания обьекта) будет доступно свойство book.title со строкой. Важно понять что это строчка означает просто: функция, установи своё поле title в значение такое то, если оно не существует, то создай. При каждом обращении к функции это действие выполняеться вновь. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| GIK |
|
|||
![]() Добрый человек ![]() ![]() Профиль Группа: Участник Сообщений: 985 Регистрация: 3.6.2005 Где: я только не небыв ал Репутация: 6 Всего: 14 |
Все понял, но возник такой вопрос.
Ставлю arguments.callee.title="title"; а он выдает "Властелин колец". Интересно из каких соображений, веть он находится не первым в списке Selecta (первым стоит Колобок Sardar взгляни пожалуста:
-------------------- Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!! Программирование - это не деятельнось! Программирование - это состояние души! Бог - самый крутой программист. |
|||
|
||||
| GIK |
|
|||
![]() Добрый человек ![]() ![]() Профиль Группа: Участник Сообщений: 985 Регистрация: 3.6.2005 Где: я только не небыв ал Репутация: 6 Всего: 14 |
Все нашол связь, ура.
Она заключается в определении экземпляра, т.е. тот экземпляр который стоит последним в списке, тот и имеет связь с функцией-конструктором и выдает из-за него "Властелин колец". Ставлю последним ЭТОТ экземпляр, и он выдает Колбка
Видимо есть какая-то связь с последним из определеных экземпляров, даже если обращение к функции-конструктору происходит не через экземпляр op2.title? -------------------- Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!! Программирование - это не деятельнось! Программирование - это состояние души! Бог - самый крутой программист. |
|||
|
||||
| Sardar |
|
||||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Ё-моё, отставить магию! Расслабся и представь что в JS ничего "магическим" образом не происходит(ну почти). Вызов конструктора это вызов функции, внутри конструктора можно изменять любые обьекты, а не только this. Да и понятие this относиться к контексту, а не к конкретному обьекту, смотреть методы call и apply у функций. Что происходит в твоём коде? Создаёться "Колобок", конструктор изменяет/создаёт себе(обьекту-функции) поле title с текстом "Колобок". Затем создаёться "Властелин колец", конструктор опять изменяет себе поле title, соотвественно последнее изменение и будет последним. Код ничем не отличаеться от:
Сейчас должно быть понятно, что нет никакой "магической" связи между обьектом и конструктором(есть поле constructor у обьекта - ссылка на функцию). Констуркор-функция это такой же обьект как и обьекты которая она пораждает, т.е. может иметь свои поля, которые может сама изменять. Если ещё не ясно, расслабся, выпей чаю, скажи "магии нет, есть логика!" и прочти текст по новой. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
||||
|
|||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |