Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   интересная конструкция. (...) (http://www.flasher.ru/forum/showthread.php?t=88955)

BlooDHounD 05.12.2006 16:59

__etc, ну сам понимаешь, что это не дело :)

Dendroid 05.12.2006 17:13

Цитата:

Сообщение от __etc
Мммм, конструктор не является функцией…
Щас поковыряюсь, но что-то затык.

Можно, конечно, поставить проверку на длину params и, если она равна единице, то брать внутренний массив.

Возможно, это недоделка компилятора, потому что в AS2 apply к конструктору вполне применим.
А в Flash 9 Alpha не пашет даже их пример из хелпа (использование альтернативного описания класса через функцию):
Цитата:

Advanced users may choose to use the function keyword instead of the class keyword to define a Function object that can be used as a template for creating objects. Such a function is called a constructor function because you can use it in conjunction with the new operator to create objects. If you use the function keyword to create a constructor function, its prototype object is assigned a property named constructor that holds a reference to the constructor function. If you then use the constructor function to create an object, the object inherits the constructor property from the constructor function's prototype object. For example, the following code creates a new constructor function, f, and an object named myF:
Код:

  function f() {}
  trace(f.prototype.constructor);      // function Function() {}
  trace(f.prototype.constructor == f); // true
  var myF = new f();
  trace(myF.constructor == f);        // true


etc 05.12.2006 17:15

Dendroid, там две модели наследования — прототипная и ещё какая-то (по дефолту). Как включить прототипную — хз.

Конструтор в AS3 не является функцией. Я даже пробовал getDefinitionByName, без результатно, правда.

Dendroid 05.12.2006 17:31

С другой стороны, constructor является writeable, и его можно переопределить ещё до создания экземпляра класса. :) Можно что-нибудь по этому поводу подумать... Не знаю, поможет или нет, не пробовал ещё...

etc 06.12.2006 01:39

У меня возникла некоторая мысль, что можно в конструкторе вызывать что-то типа
Код:

var args:Array = [arg1,arg2];
args = args.concat(params);
this.init.apply(this,args);

а в методе… А в методе хз, что, что-то типа:
Код:

var returnClass:AnyClass = new AnyClass();
var args:Array = [arg1,arg2];
args = args.concat(params);
returnClass.init.apply(returnClass,args);
return returnClass;

Типа того :)

barby 06.12.2006 03:37

Люди, а объясните практическую сторону этой проблемы: для чего это и когда надо? :away:

etc 06.12.2006 03:54

Прочитай первый пост :)

BlooDHounD 06.12.2006 15:47

__etc, ну тогда проще заюзать один unshift :) только вот с методом у меня проблем нету :) мне конструктор интересен.

пытался делать MyClass.prototype.constructor.call но у конструктора нефига нет никаких методов.

WindWalker 21.12.2006 14:07

Чисто на шару говорю первую пришедшую в голову мысль.
Никакой ответственности за ней не несу :)

А если вместо apply поставить call ?

etc 21.12.2006 15:45

WindWalker, call написан выше :)


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

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