Форум 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=95541)

Gaen 08.05.2007 05:48

Случайно заметил одну особенность...
 
Может я конечно фигню тут написал, но чтобы выловить такую ошибку, понадобилось время. Поэтому стараюсь других от этого уберечь :D

Код:


myObj={};

myObj.test=function(){
    trace(this);
}//myObj.test


_root.btn1.onPress=myObj.test;

_root.btn2.onPress=function(){
    myObj.test();               
}//_root.btn2.onPress

при нажатии на btn1 трейсится _level0.btn1
при нажатии на btn2 трейсится _level0.myObj

Тоесть если на одно и то же событие по-разному вешать функцию, this будет ссылаться в разные места

Kikasso 08.05.2007 06:24

Ну так это не ошибка..
Попробуйте написать то же самое, но по-другому:
Код:

myObj={};
btn1.onPress = myObj.test = function(){
    trace(this);
}
btn1.onPress(); // _level0.btn1
myObj.test();  // [object Object]


iNils 08.05.2007 06:39

И что странного?
В первом случаи мы делаем ссылку на метод, кому он принадлежит не важно.
А во втором мы вызываем метод объекта.

7thsky™ 08.05.2007 07:08

вот почитай по теме - http://noregret.org/tutor/scope/

etc 08.05.2007 11:30

Вот в AS3 область видимости остается за тем объектом, к которому «присобачен» метод, слава богу…


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

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