Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Можно ли залезть в конструктор встроенных классов? (http://www.flasher.ru/forum/showthread.php?t=111979)

chingachgoog 14.05.2008 14:24

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

add: нечто подобное я делал для мувиков
http://flasher.ru/forum/showpost.php...0&postcount=12

iNils 14.05.2008 14:34

А расширение уже не в моде?

chingachgoog 14.05.2008 15:39

Расширение включает в цепочку видимости какой-то класс. Т.е. объект наследует свойство. А нужно чтобы свойство задавалось, а не наследовалось. Т.к. свойство может быть уникальным.

etc 14.05.2008 15:41

Так опишите свойство в наследнике, а его значение задавайте извне.

iNils 14.05.2008 16:05

Цитата:

Сообщение от chingachgoog (Сообщение 739109)
Расширение включает в цепочку видимости какой-то класс. Т.е. объект наследует свойство. А нужно чтобы свойство задавалось, а не наследовалось. Т.к. свойство может быть уникальным.

Код:

class A {
        public var bum:Object = null;
        function A (c) {
                bum = c;
        }
}

Код:

class B extends A {
        public var pum:Object = null;
        function B (c, d) {
                super (c);
                pum = d;
        }
}

и все

chingachgoog 14.05.2008 16:08

Цитата:

Сообщение от __etc (Сообщение 739111)
Так опишите свойство в наследнике, а его значение задавайте извне.

Это сработает для объектов определенного подкласса.
(тогда бы я не стал и тему постить, т.к. до конструктора своего собственного класса я и так доберусь)
Но никак не сработает для ЛЮБОГО объекта.
Например такого:
obj={} или такого obj=[]
мне надо, чтобы у obj тут же было (или хотя бы через кадр) свое уникальное свойство.

iNils 14.05.2008 16:14

Код:

Object.prototype.a = 5;
Array.prototype.a = 6;
obj = {};
arr = [];
trace (obj.a);
trace (arr.a);

Только что мешает сделать свой класс и вместо {} [], вызывать через new?

chingachgoog 14.05.2008 16:25

Цитата:

Сообщение от iNils (Сообщение 739127)
Код:

Object.prototype.a = 5;
Array.prototype.a = 6;
obj = {};
arr = [];
trace (obj.a);
trace (arr.a);


Так это наследование свойства, которое заранее известно и вовсе не уникально. У всех объектов будет одно и то же значение свойства.

Цитата:

Сообщение от iNils (Сообщение 739127)
Только что мешает сделать свой класс и вместо {} [], вызывать через new?

Просто раздумываю над проблемой рекурсивного обегания всего и вся. И тут встают две проблемы:
1) у объектов нет свойства типа _parent
2) нельзя отличить ссылку на объект от самого объекта - и тут возможно зацикливание.

Конечно можно написать свои классы-аналоги и всегда использовать new, но это как-то громоздко выглядит.

iNils 14.05.2008 16:32

А чего то не заметил, где в {} [] передается свойство в конструктор. Что-то ты мутишь воду :)

chingachgoog 14.05.2008 17:14

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


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

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