對象的屬性可以通過兩種方式進行訪問:
* obj.key1。key1為標識符。
* obj\[key2\]。key2為任意值。
~~~
var obj = {};
obj.foo = 10;
obj['foo'] = 20;
console.log(obj.foo);//20
~~~
使用obj.key語法去訪問一個屬性時,key部分會有跟變量名一樣的命名限制。
使用obj\[key\]則沒有,甚至能通過變量傳入鍵名。如:
~~~
var obj = {};
obj.*foo=10;//報錯
var key = '***';
obj[key] = 666;//obj['***']為666
~~~
理論上,對象訪問不同鍵名的屬性都一樣快,也不會因為屬性數量的增長而變慢。詳情自尋哈希表。
# delete
對一個對象不存的屬性進行賦值,會為該對象添加屬性。
對一個對象的屬性使用delete關鍵字,則會從對象中刪除該屬性。
~~~
var foo = {};
foo.x = {};
foo.y = foo.x;
delete foo.x;
console.dir(foo);
~~~
