Flex / ActionScript3: ключевое слово «with» скрывает неправильно написанные имена свойств - PullRequest
2 голосов
/ 29 января 2009

В Flex 3,

var anInstance : MyClass = new MyClass();
with (anInstance)
{
    property1 = "fred";
    property2 = 5;
    propert3 = 7;
}

НЕ помечает "Propert" как несуществующее имя свойства. Я думал, что это было следствием злого поведения объекта JavaScript (ссылка на имя свойства объекта неявно создает его), но, похоже, это побочный эффект «with».

Это меня очень огорчает, так как "с" было маленьким напоминанием о Delphi (за исключением того, что там он работает правильно).

Я что-то здесь упускаю?

Ответы [ 2 ]

3 голосов
/ 29 января 2009

Из прочтения документации :

Actionscript явно расширяет область видимости для встроенных переменных (не удивительно, поскольку синтаксис не требует явного символа разыменования, такого как "." Или "->", чтобы указать, какие имена переменных должны быть "засохшими".) вы фактически создаете переменную в глобальной области видимости ProperT3.


РЕДАКТИРОВАТЬ, подумав, почему существует эта "проблема" -

Javascript - это воплощение нестрогого набора текста. А Actionscript, являясь строгим надмножеством Javascript, не может принудительно применять строгую типизацию, за исключением случаев, объявленных его собственными расширениями языка, что означает, что он должен поддерживать нетипизированные переменные.

1 голос
/ 29 января 2009

Некоторые классы являются динамическими (например, movieclip) и могут иметь свойства, добавленные к ним во время выполнения:

http://flexblog.faratasystems.com/?p=95

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...