- Если вы выбираете все объекты внутри другого объекта или словаря с помощью for используйте его так:
for (var key:Object in target)...
а не так:
for (var key:String in target)...
Хотя ключ и стринговый, но при переборе 2 вариант, будет работать в 10-15 раз медленее.#439066from Talk.v1050B4AFD89, 25 months ago
Replies (19)
- @blooddy:ну не в 10-15 раз, а на 10-15%. и так уже давно. просто если как String объявлять, то доп преобразования порисходят.
function test():void {
var o:Object = new Object();
for ( var i:uint = 0; i<5e5; i++ ) {
o[ i.toString( 32 ) ] = true;
}
var t:Number;
var s:String, oo:Object;
t = getTimer();
for ( oo in o ) {
}
trace( getTimer() — t );
t = getTimer();
for ( s in o ) {
}
trace( getTimer() — t );
}
test();#439066/3from Talk.v10538654D8F, 23 months ago - @andyone:@blooddy Как бы так:
* — Показывает, что свойство является нетипизированным. Использование символа звездочки для аннотации типа равнозначно использованию аннотации без типа. Выражения, считанные из нетипизированных свойств, считаются нетипизированными выражениями. Нетипизированные выражения или свойства рекомендуется в следующих условиях:
Когда требуется отложить проверку типа на момент выполнения. Нетипизированное свойство или выражение можно использовать, чтобы отказаться от проверки типа во время компиляции в строгом режиме. Однако помните, что вне зависимости от того, используется ли строгий режим или нет, проверка типа инструкций присваивания во время выполнения все равно осуществляется.
Когда вы хотите сохранить значение undefined в свойстве. В отличии от предыдущих версий ActionScript значение undefined не является членом типа данных Object. Для сохранения значения undefined необходимо использовать нетипизированное свойство.#439066/12from Talk.v10428D73BDB, 23 months ago, in reply to /10 - @blooddy:@andyone боже мой. какой сумбур. это из доки? кого угодно в смуть введёт.
все объекты в предыдущих версиях *. это правда. на самая важная вещь, это отсутвие типа, и как результат важноможность полного отсутвия значени ( undefined ).
null — это такой объект. просто он "типа" пустой. typeof даст object.
undefined — это ваще не объект и даже не тип. typeof даст undefined.
var o1:Object = undefined;
trace( o1 ); // null. Object не может быть undefined
var o2:* = undefined;
trace( o2 ); // undefined. как и положено
тоесть в типизированной системе undefined служит для неопределённости не типа, а значения. это случай, когда вы не знаете, а будет ли там вообще чего-либо.
для описанного вами случая с неопределённым типом вполне подходит Object, так как это именно базовый тип всех типов. всё что существует в АС наследованно оименно от него.#439066/14from Talk.v10538654D8F, 23 months ago, in reply to /12
