[TOC]
>[success] # 對象字面量語法的擴展
~~~
'對象字面量'是'JS'中最流行的模式之一( 'JSON' 就是基于這種語法),而它還存在于互聯網 上的幾乎所有'JS'
文件中。'對象字面量'如此流行,是因為它是一種'創建對象'的簡潔語法(否則 要多寫不少代碼)。對于開發者
來說,幸運的是'ES6'用幾種方式擴展了'對象字面量',將這種語法變得更加強大、更加簡潔。
~~~
<br/>
>[success] ## 對象屬性簡寫
~~~
1. 在ES6中,當對象的一個'屬性名稱'與'本地變量名'相同時,你可以簡單書寫名稱而'省略冒號與值'。
2. 當'對象字面量'中的屬性只有名稱時,'JS'引擎會在周邊'作用域'查找'同名變量'。若找到,該變量的值將會
被賦給'對象字面量'的'同名屬性'。
~~~
ES5
~~~
function test (name,age){
return {
name: name,
age: age
}
}
console.log(test('鳴子嘎',66)) // {name: "鳴子嘎", age: 88}
~~~
ES6
~~~
function test (name,age){
return {
name,
age
}
}
console.log(test('鳴子嘎',66)) // {name: "鳴子嘎", age: 88}
~~~
<br/>
>[success] ## 對象中方法簡寫
ES5
~~~
let person = {
name: "Nicholas",
sayName: function () {
console.log(this.name)
}
}
~~~
ES6
~~~
var person = {
name: "Nicholas",
sayName() {
console.log(this.name)
}
}
~~~
<br/>
>[success] ## 需計算屬性名(變量當對象的key)
~~~
1. '需計算的屬性名':只要用'方括號'來代替'小數點'即可。
2. '方括號'允許你將'變量'或'字符串'指定為屬性名,而在'字符串'中允許存在會導致語法錯誤的'特殊字符'
~~~
<br/>
>[success] ### ES5創建計算屬性名
~~~
在'ES5'中無法直接在'對象'中定義'計算屬性名',只能通過下面這種方式定義。
~~~
~~~
let person = {},
lastName = "last name"
person["first name"] = "Nicholas"
person[lastName] = "Zakas"
console.log(person["first name"]) // "Nicholas"
console.log(person[lastName]) // "Zakas"
~~~
<br/>
>[success] ### ES6創建計算屬性名
~~~
'ES6'可以直接寫在對象中定義'計算屬性名'
~~~
~~~
let lastName = "last name"
let person = {
"first name": "Nicholas",
[lastName]: "Zakas"
}
console.log(person["first name"]) // "Nicholas"
console.log(person[lastName]) // "Zakas"
'對象'內的'方括號'表明該屬性名需要計算,其結果是一個'字符串'。這意味著其中可以包 含表達式,
像下面這樣:
let suffix = " name"
let person = {
["first" + suffix]: "Nicholas",
["last" + suffix]: "Zakas"
}
console.log(person["first name"]) // "Nicholas"
console.log(person["last name"]) // "Zakas"
~~~
- Javascript基礎篇
- Array數組
- 數組插入值
- filter()
- forEach()
- push()
- pop()
- unshift()
- shift()
- valueOf()
- 面向對象思想
- Javascript 面向對象編程(一):封裝
- Javascript面向對象編程(二):構造函數的繼承
- Javascript面向對象編程(三):非構造函數的繼承
- 解構
- 數組的解構賦值
- 對象的解構賦值
- 函數參數解構
- 字符串的解構賦值
- 數值和布爾值的解構賦值
- 圓括號問題
- 字符串.
- split()
- charAt()
- charCodeAt()
- concat()
- indexOf()
- lastIndexOf()
- match()
- replace()
- includes()
- 初識遞歸
- 渲染ul-li樹形結構
- 異步函數解決方案
- 1. callback回調函數
- 2. ES6 - Promise
- JavaScript高級程序設計(書)
- 在html中使用JavaScript
- script標簽的位置
- 延遲腳本
- 異步腳本
- <noscript>元素
- 基本概念
- 嚴格模式
- 變量詳解
- 數據類型
- typeof操作符
- undefined類型
- Null類型
- Boolean類型
- Number類型
- 深入了解ES6(書)
- var 、let 、 const
- 字符串與正則表達式
- 字符串
- 正則表達式
- 函數
- 函數形參默認值
- 使用不具名參數
- 函數構造器的增強能力
- 擴展運算符
- name屬性
- 明確函數的多重用途
- 塊級函數
- 箭頭函數
- 尾調用優化
- 擴展的對象功能
- 對象類別
- 對象字面量語法的擴展
- ES6對象新增方法
- 重復的對象屬性
- 自有屬性的枚舉順序
- 更強大的原型
- 解構:更方便的數據訪問
- 為什么要用解構?
- 對象解構
- 數組解構
- 混合解構
- 參數解構
- Symbol與Symbol屬性
- 創建Symbol
- Symbol的使用方法
- Symbol全局私有屬性
- Symbol與類型強制轉換
- Symbol屬性檢索
- Symbol的一些構造方法
- Set集合與Map集合
- Set集合
- Weak Set集合(弱引用Set集合)
- Map集合
- JS標準內置對象
- Object 構造函數及屬性
- Object 構造方法
- Symbol 內建對象類的函數及屬性
- Set 構造函數及屬性
- Weak Set 構造函數及屬性
- JS雜項
- 類數組對象
- Class類的理解和使用