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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 01.12.2001, 15:21
RFMitrio вне форума Посмотреть профиль Отправить личное сообщение для RFMitrio Посетить домашнюю страницу RFMitrio Найти все сообщения от RFMitrio
  № 21  
RFMitrio
 
Аватар для RFMitrio

Регистрация: Aug 2001
Адрес: город на Неве
Сообщений: 1,908
Отправить сообщение для RFMitrio с помощью ICQ
Ах так! Тогда вопросы к Джону.
1. как я понимаю при определении ф-ции конструктора не создается никаких объектов?
function constructor_one()
{
this.a = "a"
this.b = "b"
this.method = function()
{
trace("one")
}
}

2. при вызове конструктора, например one = new constructor_one(); в памяти компа создается блок со следующими полями:
1.a содержит символ "а"
2.b содержит символ "b"
3.поле method содержит ссылку на область памяти, где описана функция метода
4. есть некая ссылка на объект prototype ( в данном случае, пустой ). Или ее нет?
Я все правильно понял? Или нет?
А если сделаем:
two = new constructor_one();
Первые 2 поля создаются заново для объекта 2. 3-е поле тоже содержит ту же самую ссылку на ту же функцию. А четвертое? Ссылку на тот же прототип?
constructor_one.prototype.new_param = "new_param";
В этом случае в области, где содержится прототип (общий для всех объектов) появляется описание прототипа.
Я не понимаю такой вещи: если сделать
one.new_param="one_param";
two.new_param="two_param";
где содержатся эти параметры? Заводится в ОЗУ новое поле под пятый параметр?
---
Спасибо заранее за пояснения. Вопросы еще будут
__________________
suum quique

Старый 01.12.2001, 17:57
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 22  
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
one.new_param="one_param";
two.new_param="two_param";


да создается новое поле, локально относительно объекта, one, two

если вызвать

delete one.new_param, то поле new_param в объекте one будет удалено, и при вызове one.new_param, будет получено содержание поля прототипа.

Прототип, по умолчанию, это новосозданный объект, и он является субкласом объекта Object.prototype, можно предположить что для создании прототипа используется конструктор Object. Но это не однозначно.
чтобы убрать наследование создаваемого класса от верхнего Object. Нужно присвоить прототипу прототипа, неопределенное значение.

constructor_one.prototyoe.__proto__ = undefined;

теперь вернусь о поле пртототипа (суперкласса) и создоваемого объекта (субкласса)

если в объекте субклассе есть вызываемое поле (в нашем примере "new_param") то вызывается значение данного поля,
если такого поля нет, то вызываетя суперкласс (прототип) и вызывается одноименно поле, и так далее, вверх и вверх по иерархии, пока у объекта не будет прототипа.

Если на одном из этапов, цепочки наследования создать локальное поле, то можно управлять наследованием...
ну в общем все достаточно просто.

Старый 01.12.2001, 18:01
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 23  
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
"Прототип, по умолчанию, это новосозданный объект",

имеется ввиду, создается при создании функции,
не понимать что для каждого созданного объекта создается свой прототип....
прототип общий для всех объектов созданных одним конструктором, (если конечно умышленно не было подмены, самим программистом)

Старый 01.12.2001, 19:04
Baltika вне форума Посмотреть профиль Отправить личное сообщение для Baltika Посетить домашнюю страницу Baltika Найти все сообщения от Baltika
  № 24  
Baltika

Регистрация: Oct 2000
Сообщений: 1,593
Отправить сообщение для Baltika с помощью ICQ Отправить сообщение для Baltika с помощью MSN Отправить сообщение для Baltika с помощью Skype™
да....мудрено ....
john, а в шестерке что-нить поменялось при работе с прототипами?
и где мона про это почитать поподробнее ??
плз.


Последний раз редактировалось Baltika; 01.12.2001 в 19:05.
Старый 01.12.2001, 21:50
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 25  
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
в шестерке появятся проперти...(properties)

это очень большой этап, (во флэш естествено )

это поле, при изменении значения которого можно будет выполнять одну функцию (метод) а при запросе значения выполнять другую функцию (метод)

короче геттеры/сеттеры.

тут есть возмжность создавать поля только для чтения,
если немного поизвращатся то можно создавать приватные поля.

второй большой этап, это доступ к элементам библиотеки, как к классам, через registerClass.
Что позволяет мувиклипы и кнопки объединять в цепочки наследований, и подменять классы уже в процессе, через идентификаторы (linkages) библиотеки.

еще одна большая возможность, так это появление нормальных идентификаторов классов.

для удобства вводится указатель super, на супер класс.

вообще шестерка вся пропитана ООП. Вернее ООС. Не объектно ориентированное программирование, а объектно ориентированный скриптинг. (это кстати термин самой макромедии) Что мне кажется более коректнее. Но ООП - привычнее

Старый 02.12.2001, 11:18
Baltika вне форума Посмотреть профиль Отправить личное сообщение для Baltika Посетить домашнюю страницу Baltika Найти все сообщения от Baltika
  № 26  
Baltika

Регистрация: Oct 2000
Сообщений: 1,593
Отправить сообщение для Baltika с помощью ICQ Отправить сообщение для Baltika с помощью MSN Отправить сообщение для Baltika с помощью Skype™
Пасиб, а где про это почитать можно ?
или будет новая статья ?

Старый 03.12.2001, 02:00
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 27  
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
Да негде особенно почитать,
да и статью рано писать, мало что еще добавят (изменят) в релизе.

кстати, забавно шестерка отображает лист объектов.. говорю же что все ооп пропитано,

Variable _level0.$version = "WIN 6,0,0,225"
Variable _level0.cons = [function 'cons'] {
prototype:[object #2, class 'proto'] {
prop:,
prop_get:[function],
prop_set:[function]
}
}
Variable _level0.proto = [function 'proto']
Variable _level0.a = [object #6, class 'proto'] {
prop:"n"
}
Variable _level0.b = [object #7, class 'proto'] {}
Variable _level0.c = [object #8, class 'proto'] {}
Variable _level0.d = [object #9, class 'proto'] {}
Variable _level0.e = [object #10, class 'proto'] {}

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

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

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


 


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


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