What is the difference between the code (i) and (ii) written below ?
(i)
var obj:Object = new Object();
obj.attribute = value ;
(ii)
var obj:Object = new Object();
obj["key"] = value;
Are there any run-time implications if I write this :
var obj:Object = new Object();
obj.somekey = value1 ;
obj["someKey"] = value2 ;
Please explain.
The difference is in the lookup mechanism: If you use the dot syntax, the compiler will know at compile time that you are accessing a property of that object. If you use the bracket syntax, the actual lookup of the property is done at runtime, and there will have to be more type checking - after all, you could compose the key string dynamically, the value could change, or you could even be calling a function instead of a variable, etc.
The result is a significant difference in performance: Bracket syntax takes about three times as long to execute as dot syntax.
Here's a little speed test to illustrate my point:
If the two were the same, except for notation, they should take exactly the same amount of time. But as you can see, this is not the case. On my machine: