在ES5之前,如果屬性名是個變量或者需要動態計算,則只能通過 對象.[變量名] 的方式去訪問。
<script type="text/javascript">
var p = { name : '李四', age : 20 } var attName = 'name'; console.log(p[attName]) //這里 attName表示的是一個變量名。
</script>
而且這種動態計算屬性名的方式 在字面量中 是無法使用的。
var attName = 'name'; var p = { attName : '李四', // 這里的attName是屬性名,相當於各級p定義了屬性名叫 attName的屬性。
age : 20 } console.log(p[attName]) // undefined
在ES6中,把屬性名用[ ]括起來,則括號中就可以引用提前定義的變量。
var attName = 'name'; var p = { [attName] : '李四', // 引用了變量attName。相當於添加了一個屬性名為name的屬性
age : 20 } console.log(p[attName]) // 李四