Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.06.2011, 23:12
Welcometo вне форума Посмотреть профиль Отправить личное сообщение для Welcometo Найти все сообщения от Welcometo
  № 1  
Ответить с цитированием
Welcometo

Регистрация: Mar 2011
Адрес: Уфа
Сообщений: 95
Отправить сообщение для Welcometo с помощью ICQ
По умолчанию Разница между "obj['s']" = и "obj.s ="

Есть ли разница в том, как указывать свойства объектам (динамически).
Так
Код:
var worker:Object = {};
worker["age"] = 15;
или так
Код:
worker.age = 15;
А так же есть ли разница в том как инициализировать новую переменную типа Object: так - var o:Object = new Object() , или так - var o:Object = {}; ?

Старый 26.06.2011, 23:20
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 2  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Разница только в скорости доступа-создания.
__________________
тут я

Старый 26.06.2011, 23:27
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 3  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
Есть ли разница в том, как указывать свойства объектам (динамически).
Первый вариант использую только там, где нельзя использовать второй.
Цитата:
А так же есть ли разница в том как инициализировать новую переменную типа Object: так - var o:Object = new Object() , или так - var o:Object = {}; ?
Рекомендуется второй вариант.

Старый 26.06.2011, 23:29
serogah вне форума Посмотреть профиль Отправить личное сообщение для serogah Найти все сообщения от serogah
  № 4  
Ответить с цитированием
serogah

Регистрация: Sep 2010
Сообщений: 16
Привет!
var o:Object = new Object() идентично var o:Object = {}. Скорость создания - одинаковая.
worker["age"] = 15 идентично worker.age = 15. Скорость доступа - одинаковая.
Только есть отличие: при помощи квадратных скобок можна формировать свойство на "лету". Например:
worker["age"+8] = 15, что эквивалентно worker.age8 = 15. Но если написать: worker.age+8 = 15 - будет ошибка

Старый 26.06.2011, 23:30
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 5  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
Первый вариант использую только там, где нельзя использовать второй.
Это ты, например, про
Код AS3:
private function setMyProp(prop:String, value:*):void {
    _obj[prop] = value;
}
?

Добавлено через 54 секунды
Цитата:
Скорость создания - одинаковая
Скорость доступа - одинаковая..
Неправда.
__________________
тут я

Старый 26.06.2011, 23:34
serogah вне форума Посмотреть профиль Отправить личное сообщение для serogah Найти все сообщения от serogah
  № 6  
Ответить с цитированием
serogah

Регистрация: Sep 2010
Сообщений: 16
Цитата:
Неправда.
Почему неправда? Я проверял.

Добавлено через 2 минуты
Код AS3:
import flash.utils.getTimer;
 
var time:uint=getTimer();
var obj:Object={};
trace(getTimer()-time) //0
Код AS3:
import flash.utils.getTimer;
 
var time:uint=getTimer();
var obj:Object=new Object();
trace(getTimer()-time) //0
В 1 и 2 варианте - результат "0"

Старый 26.06.2011, 23:38
Welcometo вне форума Посмотреть профиль Отправить личное сообщение для Welcometo Найти все сообщения от Welcometo
  № 7  
Ответить с цитированием
Welcometo

Регистрация: Mar 2011
Адрес: Уфа
Сообщений: 95
Отправить сообщение для Welcometo с помощью ICQ
Спасибо за ответы.
serogah, привет)
worker["age"+8] = 15, что эквивалентно worker.age8 = 15.
Вот это очень интересная вещь) Не знал)Часто необходимо бывает динамически создавать объекты(неопределенное количество), и в таком случае для доступа к ним приходится пихать их в коллекцию, а оттуда их уже по индексу выдергивать. А тут, грубо говоря, можно будет динамически каждому объекту раздавать id:
Код:
for (i;i<n;i++){worker["age"+i]}
. А потом обращаться worker.age1, worker.age2 и тд

Старый 26.06.2011, 23:39
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 8  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
на миллионе итераций проверьте
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 26.06.2011, 23:40
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 9  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Код AS3:
private function onTimer():void {
	var num:uint = 1000000;
	var time:int;
	var obj:Object;
 
	time = getTimer();
	var i:int;
	for (i = 0; i < num; i++) {
		obj = { };
	}
	trace(getTimer() - time);
 
	time = getTimer();
	for (i = 0; i < num; i++) {
		obj = new Object();
	}
	trace(getTimer() - time);
 
	var objProps:Object = { };
 
	time = getTimer();
	for (i = 0; i < num; i++) {
		objProps.myProp = 50;
	}
	trace(getTimer() - time);
 
	time = getTimer();
	for (i = 0; i < num; i++) {
		objProps["myProp"] = 50;
	}
	trace(getTimer() - time);
}
Потому что проверять нужно не на одном.
Трейсы выдали: 1000, 621, 242, 362 соответственно.
__________________
тут я

Старый 26.06.2011, 23:43
serogah вне форума Посмотреть профиль Отправить личное сообщение для serogah Найти все сообщения от serogah
  № 10  
Ответить с цитированием
serogah

Регистрация: Sep 2010
Сообщений: 16
Цитата:
на миллионе итераций проверьте
. Да, верно, скорости разные. Но разница все равно небольшая.

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:07.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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