Показать сообщение отдельно
Старый 21.06.2012, 16:59
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 4  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
В большинстве случаев это просто для удобства. Ну а вообще динамический доступ, да и вообще обращение к чему-либо через точку (точка - это тоже оператор) затребует больше ресурсов, чем обращение к заранее закэшированым ссылкам.

Для наглядного примера можете такое у себя попробовать:
Код AS1/AS2:
var a = {};
a.b = {};
a.b.c = {};
a.b.c.d = {};
a.b.c.d.e = {};
a.b.c.d.e.f = {};
a.b.c.d.e.f.someProp = 15;
 
var t = getTimer();
var s = 0
for (var k = 0; k < 1000000; k++) {
	s += a.b.c.d.e.f.someProp;
}
trace(getTimer() - t) // 4041
 
var t = getTimer();
var s = 0
var q = a.b.c.d.e.f
for (var k = 0; k < 1000000; k++) {
	s += q.someProp;
}
trace(getTimer() - t) // 3061
В комментариях значения, которые у меня получились. И да, представьте, что вместо a.b.c.d.e.f будут осмысленные переменные, по 10 - 12 символов каждая, — тут уж точно лучше закэшировать

Еще можно ссылки на клипы не просто перечислением var clip_1 = ... создавайть, а, например, в массив загонять для удобства.

Иными словами, чем больше операций происходит для доступа к камому-либо полю, тем хуже.

Код AS1/AS2:
eval("_root.cam"+i+".e"+c).onPress = ... // 4 операции
_root.cam3.e6.onPress = ... // 2 операции
cam_1.onPress = ... // без операций, если не считать количество операций при кэшировании
__________________
hauts.ru


Последний раз редактировалось Hauts; 21.06.2012 в 17:19.