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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 20.11.2003, 20:09
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 1  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
2Sergey"iLoveYou"
сергей, с примером уже разобрались давно :)
вопрос только зачем он такой странный :)

2dm_nev
аа... ну вот. я тебе это и сказал только не так подробно...

но, имхо, этот пример все только запутывает...
я думаю надо было показать наследование отдельно а вписывание методов отдельно...
(хотя кто я такой чтобы ему советовать :)) )

Старый 20.11.2003, 20:15
Whatsername вне форума Посмотреть профиль Отправить личное сообщение для Whatsername Найти все сообщения от Whatsername
  № 2  
Whatsername

Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
Цитата:
все объясняет и раскладывает по полочкам.
Sergey"iLoveYou", если бы у меня все полочки лежали на своих полочках, то я бы ни спрашивал ни про какие ООПолочкины структуры

Я что-то совсем запутался... Скажите просто что делает строчка
Код:
this.$_base = Pet;
Может кофе выпить?

Старый 20.11.2003, 20:24
Whatsername вне форума Посмотреть профиль Отправить личное сообщение для Whatsername Найти все сообщения от Whatsername
  № 3  
Whatsername

Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
2 Nox Noctis, уже разобрались?
Цитата:
потому что в классе Dog НЕТУ такого метода - Pet...
Разве this в классе Дог указывает не на экземпляр (rover), разве этот экземпляр не может вызвать метод Pet?

Nox Noctis, я понимаю, что у тебя чувство, будто ты седьмой раз мне одно и тоже повторяешь, но я ей-ей не понимаю.

Старый 20.11.2003, 21:16
Whatsername вне форума Посмотреть профиль Отправить личное сообщение для Whatsername Найти все сообщения от Whatsername
  № 4  
Whatsername

Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
По умолчанию спасибо

Ребята, тут все это знают, но я скажу еще раз:
Код:
this.$_base = Pet;
$_base получает метод Pet, иначе этот метод не вызвать.
Все верно?
Спасибо большое

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

Регистрация: Aug 2001
Сообщений: 4,121
хмм... ну все же написано уже :)
а у дебройля вообще длинно и подробно разжевано...

смотри:
Код:
Pet = function (name) {
	trace("test : "+this+" : "+this.test);
};
Dog = function (name) {
	trace("is Pet function here ? "+(Pet ? "yes" : "no"));
	Pet();
	trace("is this.Pet function here ? "+(this.Pet ? "yes" : "no"));
	this.Pet();
};
Dog.prototype.test = "this is a Dog class member";
rover = new Dog("Rover");
убрали все лишнее..

в конструкторе Дог смотрим видна ли функция (ЭТО НЕ МЕТОД) Pet в данной области видимости имен. потом проверяем то же самое для this.Pet...

this.Pet естесственно не видна. если бы мы сделали так:
Код:
Pet = function (name) {
	trace("test : "+this+" : "+this.test);
};
Dog = function (name) {
	trace("is Pet function here ? "+(Pet ? "yes" : "no"));
	Pet();
	trace("is this.Pet function here ? "+(this.Pet ? "yes" : "no"));
	this.Pet();
};
Dog.prototype.test = "this is a Dog class member";
Dog.prototype.Pet = Pet
rover = new Dog("Rover");
то все бы заработало. потому что мы добавили к классу Дог МЕТОД Pet.

а в примере дебройля именно это и происходит.. мы добавляем к экземпляру класса Дог метод Пет.. просто потом его сразу удаляем после использования.

Старый 20.11.2003, 22:43
iLoveYou вне форума Посмотреть профиль Отправить личное сообщение для iLoveYou Найти все сообщения от iLoveYou
  № 6  
iLoveYou
wanted

Регистрация: Sep 2002
Сообщений: 1,737
Nox, понятно
меня пример смутил наличием Dog.prototype.__proto__ = Pet.prototype;
вопрос, оказывается, в другом был.

Старый 21.11.2003, 11:25
Whatsername вне форума Посмотреть профиль Отправить личное сообщение для Whatsername Найти все сообщения от Whatsername
  № 7  
Whatsername

Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
Спасибо большое, Nox Noctis ты мне очень помог. Я наконец-то понял как это работает. Метод - просто свойство, принадлежащее классу, иначе он (метод) работать не будет.
Хотя я встречал исходники, где определяется функция (метод), а потом к ней (к нему) обращаются все кто захочет - любые переменные.
Например в первом кадре определяется метод formatbytes (bytes); для форматирования bytes в дружественный размер (57 Kb, 1.3 Mb), а во втором кадре левая переменная, содержащая getBytesLoaded (); обращается к formatbytes (bytes); и все работает! Это не против правил ООП? Ведь переменная, содержащая getBytesLoaded (); не имеет метода formatbytes (); в своем свойстве.
Если я что-то напутал, то я уверен, что все равно соображу - рано или поздно. А вот если ты уже засыпаешь читая мои вопросы - забудь. Спасибо большое.

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

Регистрация: Aug 2001
Сообщений: 4,121
Цитата:
Оригинал написал(а) dm_nev
Метод - просто свойство
Цитата:
Оригинал написал(а) dm_nev
обращаются - любые переменные
что-что, простите ?
ладно фиг с ними с формулировками, главное чтобы ты сам понимал что сказал :))

методом называется функция, ссылка на которую хранится внутри объекта. блягодаря тому что она вызывается из объекта, указатель this указывает на объект из которого она вызвана.

но функция может и не быть привязана к объекту. можно вызывать функцию саму по себе.
например проверь:
Код:
test = function () {
	trace(this);
};
id = setInterval(test, 500);
в аутпуте будет undefined. потому что функция вызвана НЕ как метод.

если ты определяешь функцию без указания объекта в котором ее прописываешь, то она автоматически становится МЕТОДОМ того мувиклипа в котором находится код.
например, если напишем в руте:
function test () {
// ...
}
то тест станет методом рута. и this внутри нее будет указывать на _левел0

Старый 24.11.2003, 19:00
Whatsername вне форума Посмотреть профиль Отправить личное сообщение для Whatsername Найти все сообщения от Whatsername
  № 9  
Whatsername

Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
Dear Nox Noctis, я решил больше ничего не писать в этом топике пока не стану супер ООПером (ужас), чтобы не нервировать тебя и людей, незаслуживающих такого непонимания с моей стороны...
Спасибо большое тебе (и не только тебе)... ребята, наверное мне нужно больше почитать книг "мы купили комьютер" или "видоус для чайников", так как я пребываю в полной уверенности, что this в методе DOG указывает на rover (будущий экземпляр DOG), и будучи полноценным экземпляром - может вызывать методы, в том числе PET.
Спасибо ребята, я все распечатал и обязательно осилю - ваша помощь не напрасна

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

Регистрация: Aug 2001
Сообщений: 4,121
гррррр... :))

в этом примере
ПЕТ ЭТО НЕ МЕТОД КЛАССА ДОГ
понимаешь ? :)
в описании класса нету такого метода.

его ВРЕМЕННО делают методом объекта РОВЕР
(в результате чего, как ты и сказал, this внутри Pet'а указывает на ровера)

но если бы этого не сделали
(всей этой ботвы с переменной $_base)
то внутри Pet'а this указывал бы на _level0, где и прописан изначально...

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

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

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


 


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


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