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

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

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

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
По умолчанию Вопрос по prototype и __proto__

Здравствуйте! Если у кого есть минутка - помогите разобраться. Часто в скриптах встречаю свойства __proto__ и prototype. В книге Гурского сказано - что использование этих свойств - это ООП в стиле AS 1.0. Т.е. насколько я понял это неактуально в случае AS 2.0, ведь любое наследование можно установить используя ClassTwo extends ClassOne. Получается эти свойства устаревшие и их лучше не использовать? Если не так - то зачем они нужны (если использую AS 2.0), в каких случаях применять?
P.S.: простите за ламерство.

Старый 18.01.2008, 20:43
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 2  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
Тут где-то была тема, в чем различие между AS1 и AS2.
Удивительно, но факт - многие этого не знают.

Старый 18.01.2008, 21:00
CrazyFlasher вне форума Посмотреть профиль Отправить личное сообщение для CrazyFlasher Найти все сообщения от CrazyFlasher
  № 3  
Ответить с цитированием
CrazyFlasher
 
Аватар для CrazyFlasher

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
в принципе они бесполезны и без них легко обойтись
__________________
Flash Developer
Папа TDP4 Team Battle

Старый 18.01.2008, 21:38
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
В АС2 без них обойтись невозможно. Можно обойтись без обращений к ним - это да.
prototype.__proto__ - ссылка на родительский класс.
prototype - ссылка на данный класс.
Т.е. у любого созданного вами класса обязательно будут эти свойства.
Код:
class MyClass extends MovieClip {
	function MyClass(){}
}
Код:
var myClassInstance = new MyClass();

trace(MyClass.prototype instanceof MovieClip);
trace(MyClass.prototype.__proto__ instanceof Object);
__________________
Hell is the possibility of sanity

Старый 19.01.2008, 03:12
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,786
Смотря для каких целей применяются эти свойства.

Старый 19.01.2008, 12:16
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 6  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Всем спасибо, помогли.
__etc, в смысле для каких целей? Для написания скриптов! Точнее - для организации наследования.

Старый 19.01.2008, 14:17
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,786
Цитата:
Сообщение от Волгоградец
Точнее - для организации наследования.
Для этих целей применять хаки как-то бессмысленно.

Старый 19.01.2008, 20:54
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 8  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну, вот, пример для чего я иногда использую обращение к prototype:
Код:
AsBroadcaster.initialize(XMLNode.prototype);
XMLNode.prototype.__appendChild = ASnative(253, 4);
XMLNode.prototype.appendChild = function(xn:XMLNode){
	this.broadcastMessage('nodeAdded',xn);
	this.__appendChild(xn);
}
XMLNode.prototype.__resolve = function(p){
	if(!isNaN(p)){
		return this.childNodes[p];
	} else if(p.charAt(0)=='#'){
		return this.attributes[p.substr(1)];
	} else {
		var r_xml:XML = new XML();
		for(var i:Number=0; i<this.childNodes.length; i++){
			if(p==this.childNodes[i].nodeName){
				r_xml.appendChild(this.childNodes[i].cloneNode(true));
			}
		}
		if(r_xml.childNodes.length==1){
			return r_xml.childNodes[0];
		} else if(r_xml.childNodes.length>1){
			return r_xml.childNodes;
		} else {
			return;
		}
	}
}

var _xml:XML = new XML('<data><someNode attr="1"><someOtherNode/></someNode><someNode attr="2"/></data>');
_xml['addListener'](this);
trace(_xml['data']);
trace(_xml['data']['someNode']);
trace(_xml['data'][0]);
trace(_xml['data'][0]['#attr']);
trace(_xml['data'][1]['#attr']);
trace(_xml['data'][0]['someOtherNode']);
function nodeAdded(xn:XMLNode):Void {
	trace('_xml added:\r'+xn+'\rnode\r--------------------');
}
Просто писать свой аналог XMLNode + XML мне лень, да и как-то бесполезно это. Использовать XPath тоже не хочется, т.как очень громоздкий и неудобный. А так вполне пушисто получается =)
*Но я не призываю никого так писать*
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 19.01.2008 в 21:27.
Создать новую тему Ответ Часовой пояс GMT +4, время: 07:19.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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