Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 03.12.2003, 23:50
Zergy вне форума Посмотреть профиль Отправить личное сообщение для Zergy Найти все сообщения от Zergy
  № 1  
Zergy

Регистрация: Dec 2002
Сообщений: 134
Отправить сообщение для Zergy с помощью ICQ
По умолчанию prototype э-ээ..%|

Зачем он нужен ? Можно ведь в объявлении класса присвоить все методы и свойства без всяких

прототипов и уже у готовых объектов их вызывать и изменять.

Может в двух словах кто-то скажет, что даёт объявление методов через prototype?
Прошу не смияцца, если это слишком ламерскый вопрос...я толька разбираюсь с классами.

Старый 04.12.2003, 13:24
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 2  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
прототип - это шаблон. что такое шаблон - знаем? :)

прототип объектов класса нужен для того чтобы не приходилось В КАЖДЫЙ объект этого класса копировать все методы и свойства, даже если они у всех объектов этого класса одинаковые...

когда метод или свойство записано в прототип, они НЕ КОПИРУЮТСЯ в каждый объект - они НАСЛЕДУЮТСЯ от класса... при обращении методу/свойству объекта сначала просматривается сам объект на наличие такого метода/свойства, если такого "собсвенного" метода/свойства в этом объекте нет, то просматривается прототип.

иллюстрация вышесказанному:
Код:
cls1 = function (name) {
	this.name = name;
};
cls1.prototype.a = function() {
	trace("inherited method from "+this.name);
};
//
// 1. INHERITED method 'a'
test = new cls1("object1 of cls1");
test.a(); // inherited method 'a' from object1 of cls1
//
// 2. own method 'a'
test.a = function() {
	trace("method 'a' from "+this.name);
};
test.a(); // method 'a' from object1 of cls1
//
// 3. INHERITED method 'a'
delete test.a;
test.a(); // inherited method 'a' from object1 of cls1
что сделали:
1. вызвали метод наследственный от класса
2. создали прямо в объекте метод и вызвали
3. удалили метод из объекта и вызвали его снова

то есть метода в самом объекте нет, но он вызывается по механизму наследования

Старый 04.12.2003, 13:25
Jlekc вне форума Посмотреть профиль Отправить личное сообщение для Jlekc Найти все сообщения от Jlekc
  № 3  
Jlekc
 
Аватар для Jlekc

Регистрация: Dec 2003
Адрес: Leopolis
Сообщений: 398
Отправить сообщение для Jlekc с помощью ICQ
По умолчанию Re: prototype э-ээ..%|

[quote]Оригинал написал(а) Zergy
[b]Зачем он нужен ? Можно ведь в объявлении класса присвоить все методы и свойства без всяких

прототипов и уже у готовых объектов их вызывать и изменять.

--------------------------------------------------------

Можно. но если не ты писал Класс !!!

Дапустим класс Button, Object как ты добавиш новые свойства и методы??

Удачи в ООП

Старый 04.12.2003, 14:12
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 4  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
По умолчанию Re: Re: prototype э-ээ..%|

Цитата:
Оригинал написал(а) Jlekc
но если не ты писал Класс !!!
Допустим класс Button, Object как ты добавишь новые свойства и методы??
глупости :)
стандартные классы можно модифицировать точно так же

Старый 04.12.2003, 15:00
Jlekc вне форума Посмотреть профиль Отправить личное сообщение для Jlekc Найти все сообщения от Jlekc
  № 5  
Jlekc
 
Аватар для Jlekc

Регистрация: Dec 2003
Адрес: Leopolis
Сообщений: 398
Отправить сообщение для Jlekc с помощью ICQ
По умолчанию Re: Re: Re: prototype э-ээ..%|

Цитата:
Оригинал написал(а) Nox Noctis
глупости
стандартные классы можно модифицировать точно так же
а я 4ё сказал

Создать новую тему   Часовой пояс GMT +4, время: 04:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 04:31.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.