![]() |
|
||||||||||
|
|
|
|||||
|
Banned
Регистрация: Dec 2005
Сообщений: 556
|
var F:Function = function () {
this.f = function () {
trace (this);
};
this.toString = function () {
return "hello";
};
};
var o:Object = new F (); o.f ();
function G ():Function {
var F:Function = function () {
this.f = function () {
trace (this);
};
this.toString = function () {
return "hello";
};
};
var o:Object = new F ();
return o.f;
}; G () ();
function G ():Function {
var F:Function = function () {
this.f = function () {
trace (this);
};
this.toString = function () {
return "hello";
};
};
var o:Object = new F ();
return o.f;
}; var z:Function = G (); z ();
Почему? |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 467
|
|
|
|||||
|
Banned
Регистрация: Dec 2005
Сообщений: 556
|
так как o.f () ничего не возвращает, то в твоей редакции будет андефайнед. вопрос, собственно, не в том. я так понял, this с функцией в AS3 никогда не расстаётся, в свете чего вышеприведенный аутпут непонятен
![]() |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 467
|
Возвращает или нет, но функцию вызывают со скобками в конце!!!
|
|
|||||
|
Banned
Регистрация: Dec 2005
Сообщений: 556
|
я чет не понял, что ты хочешь этим сказать. а я вот хочу написать БЕЗ скобок. компилер не против, рантайм не против, а вот человек завтрашнего дня почему-то против.
|
|
|||||
|
Регистрация: Aug 2007
Сообщений: 467
|
Цитата:
function G ():Function {
var F:Function = function () {
this.f = function () {
trace (this);
};
this.toString = function () {
return "hello";
};
};
var o:Object = new F ();
return o.f;
}; var z:Function = G (); z ();
Типа так... ![]() Последний раз редактировалось 2morrowMan; 14.01.2008 в 13:05. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
2morrowMan, вы снова не в теме со своими скобками.
aQuestion, в первом случае все понятно? Создали объект типа Function, у него есть функция f, область видимости ссылается на этот объект. Во втором случае возвращается ссылка на функцию, которая по факту становится анонимной, т.к. объект, к которому она была привязана, был удален (он же локальный внутри функции). Функция существует, объект — нет. В третьем случае это особенности работы Flash CS3, z — поле класса MainTimeline, z ссылается на функцию, которая сама по себе анонимная, но т.к. z принадлежит классу, то область видимости внутри функции будет ссылаться на класс. Последний раз редактировалось etc; 14.01.2008 в 13:07. |
|
|||||
|
Banned
Регистрация: Dec 2005
Сообщений: 556
|
Цитата:
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
Для таких объектов области видимости меняются, как в AS2. |
|
|||||
|
Modus ponens
|
Очевидно по той же причине, по которой у arguments нету больше свойства caller - this в функции находится динамически, а не является каким-то ее параметром.
__________________
Hell is the possibility of sanity |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:10. |
|
|
« Предыдущая тема | Следующая тема » |
|
|