Using. ou [] para acessar as propriedades do objeto - qual é a diferença?

Qual é a diferença entre o código (i) e (ii) escrito abaixo?

(Eu

var obj:Object = new Object();
obj.attribute = value ;

(ii)

var obj:Object = new Object();
obj["key"] = value;

Existem implicações em tempo de execução se eu escrever isso:

var obj:Object = new Object();
obj.somekey = value1 ;
obj["someKey"] = value2 ;

Por favor explique