ECMAScript6使得聲明對象字面量更加簡單,提供了屬性簡寫和方法簡寫功能,屬性名計算的新特性。es6
function getInfo(name, age, weight) { return { // 若是屬性名和屬性值同名能夠利用、es6的屬性簡寫 name, // 等同於 make: make age, // 等同於 model: model weight, // 等同於 value: value // ES6的屬性名是可計算的 ['over' + weight]: true, // 對象方法名簡寫能夠省略 function 關鍵字 descripte() { console.log(name, age, weight); } }; } let person = getInfo('Kia', 27, 400); console.log(person);// {name: "Kia", age: 27, weight: 400, over400: true, descripte: ƒ}
若是能夠理解上述三個新特性,能夠沒必要往下閱讀。下面的文字僅提供給還有疑問的朋友。函數
在 ES5及之前的版本中,對象字面量只支持鍵值對集合。實際業務中,對象字面量的初始化會有必定的代碼重複。this
//ES5 function createPeople(name, age) { return { name: name, age: age }; }
createPeople
函數用來建立一個People的對象,能夠看到上面的代碼的 name
和age
分別書寫了兩次,有些麻煩。在ES6中經過使用屬性簡寫特性能夠消除這種屬性名稱和局部變量之間的重複書寫,當對象的屬性和變量同名時,能夠沒必要再寫冒號和值。spa
function createPeople(name, age) { return { name, age }; }
ES5中若爲對象添加方法必須指定方法名稱,並完整地定義函數來實現。3d
var people = { name: 'xixi', sayName: function () { console.log(this.name); } };
ES6的語法更簡潔,消除了冒號和方法名。code
let people = { name: 'xixi', sayName() { console.log(this.name); } }; people.sayName();// xixi
let lastName = 'last name'; let person = { [lastName]: 'yuan' }; console.log(person[lastName]);// yuan
對象字面量擴展的3個新特性介紹完畢,你們能夠回到文章開頭檢查一下本身是否掌握了本小結內容。對象
深刻理解ES6
learning-es6-enhanced-object-literalsblog