В чем разница между obj [name] и obj.name в ActionScript? - PullRequest
0 голосов
/ 17 февраля 2010

Я слышал разные вещи на форумах, но не смог найти конкретный ответ о разнице между obj [name] и obj.name.Компилятор обрабатывает их по-разному?

Ответы [ 3 ]

5 голосов
/ 17 февраля 2010

Зависит от того, является ли obj динамическим классом или нет. obj [name] - это проверка во время выполнения для свойства, в котором obj.name выдает ошибку времени компиляции, если она не существует.

4 голосов
/ 17 февраля 2010

на самом деле, это obj [выражение] против obj.identifier

первое всегда приводит к динамическому поиску во время выполнения, тогда как второе может и будет проверяться во время компиляции. Следовательно, он может генерировать ошибки во время компиляции, если obj запечатан (то есть не является динамическим) и не имеет свойства, соответствующего идентификатору. Кроме того, если свойство не является динамическим (то есть добавлено свойство динамического объекта во время выполнения), но определено в классе объектов, то эта информация используется для ускорения поиска.

Подводя итог: в отличие от obj [выражение], obj.identifier типобезопасен и значительно быстрее

2 голосов
/ 23 февраля 2010
var foobar:String = "id";

var obj:Object = new Object{ id:"the value of variable" };

trace( obj.id ); // the value of variable
trace( obj[ foobar ] ); // value of variable

вы бы использовали подход [], если бы это была переменная, а у вас не было имени

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