對(duì)象的屬性可以通過(guò)兩種方式進(jìn)行訪問(wèn):
* obj.key1。key1為標(biāo)識(shí)符。
* obj\[key2\]。key2為任意值。
~~~
var obj = {};
obj.foo = 10;
obj['foo'] = 20;
console.log(obj.foo);//20
~~~
使用obj.key語(yǔ)法去訪問(wèn)一個(gè)屬性時(shí),key部分會(huì)有跟變量名一樣的命名限制。
使用obj\[key\]則沒(méi)有,甚至能通過(guò)變量傳入鍵名。如:
~~~
var obj = {};
obj.*foo=10;//報(bào)錯(cuò)
var key = '***';
obj[key] = 666;//obj['***']為666
~~~
理論上,對(duì)象訪問(wèn)不同鍵名的屬性都一樣快,也不會(huì)因?yàn)閷傩詳?shù)量的增長(zhǎng)而變慢。詳情自尋哈希表。
# delete
對(duì)一個(gè)對(duì)象不存的屬性進(jìn)行賦值,會(huì)為該對(duì)象添加屬性。
對(duì)一個(gè)對(duì)象的屬性使用delete關(guān)鍵字,則會(huì)從對(duì)象中刪除該屬性。
~~~
var foo = {};
foo.x = {};
foo.y = foo.x;
delete foo.x;
console.dir(foo);
~~~

