Разница заключается в механизме поиска: если вы используете точечный синтаксис, компилятор будет знать во время компиляции, что вы обращаетесь к свойству этого объекта.Если вы используете синтаксис скобок, фактический поиск свойства выполняется во время выполнения, и потребуется дополнительная проверка типов - в конце концов, вы можете составить строку ключа динамически, значение может измениться, или вы даже можете вызыватьфункция вместо переменной и т. д.
Результатом является значительное различие в производительности: Синтаксис скобки выполняется примерно в три раза дольше, чем синтаксис точки.
Вот небольшой тест скорости, чтобы проиллюстрировать мою точку зрения:
var start : int = getTimer();
var obj:Object = { something : "something" };
for (var i : int = 0; i < 100000000; i++) {
var n:String = obj.something;
}
trace ("Time with dot syntax: "+(getTimer() - start));
start = getTimer();
for (i = 0; i < 100000000; i++) {
var o:String = obj["something"];
}
trace ("Time with bracket syntax: "+(getTimer() - start));
Если бы они были одинаковыми, за исключением обозначений, они должны занимать ровно столько же времени.Но, как вы можете видеть, это не так.На моей машине:
Time with dot syntax: 3937
Time with bracket syntax: 9857