1、對象的屬性可以簡寫 {name} 表示'name:name'
對象的方法可以簡寫 {fn(){}} 表示'fn:function(){}'
普通對象 就是自己創建的簡單對象 '{}'
特異對象 就是修改了 Symbol屬性的對象
標準對象 就是標準已經提供的一些特殊行爲的對象 Array Date
內建對象 就是運行環境中已經提供的對象 標準對象是內建對象的子集
可計算屬性名 用'[變量]:value' 表示可計算屬性
Object.is(a,b) 判斷類型和值全等
Object.assign({},{}) 混合 後面的覆蓋前面的
重複的屬性 後面的生效 '{a:123,a:456}'
枚舉順序 'getOwnPropertyNames()' 返回的鍵 數字按照升序排在最前 後面是其它鍵按照加入對象的順序排
原型對象 getPrototypeOf() setPrototypeOf()
對象中的方法有 [[HomeObject]] 屬性 表示這是個方法
2、結構複製 let {key} = {key:value} 表示把 後面對象的 'key'對應的位置的值 抽取出來 賦予 'key'這個變量
默認值 let {key='xxx'} = {} 當 後面對象'key' 位置不存在 前面就把 默認的值 賦予 'key' 變量
非同名賦值 let {key:a} = {key:'123'} 將 右邊對象的 'key' 位置的值 抽取 賦予 'a' 變量
嵌套 let {key : { key2}} = {key: { key2 : 123}} 將 右側 'key' 位置值 抽取 賦予 {key2} 然後 再將這個值中的 'key2' 位置抽取 賦予 'key2'變量
數組解構 let [key] = [1,2,3] 將 'key' 在左側對應的位置取出來 然後找到右側數組中該數組這個位置的值 賦予 'key'
默認值 let [key=123] = [] 右側抽取不到值 就將默認值賦予 'key'
不定元素 let [...a] = [1,2,3] 將 '...a' 位置在右側相同位置 開始到右側數組結束的所有值 賦予 'a'數組
混合解構 就是有數組有對象 分別找到位置 一層一層 賦值 解構 賦值 。。
解構參數 就是在函數中的形參位置 使用解構 'function a ({key}={key:123}) {}' 將'=' 右側的'key'位置的值取出 賦值給 形參中的'key' 作爲這個形參的默認值
3、Symbol 用來做可計算的鍵 key = Symbol('這是一個鍵') {[key]:123}
全局共享Symbol Symbol.for() Symbol.keyFor()
Symbol屬性 就是一些接口 普通對象裏面實現這些接口就可以讓普通對象編程特異對象,擁有特異功能,比如修改instanceof 的返回值
可以操作默認迭代器、創建一個迭代器,實現for of 時候的自定義規則
可以操作with 語句操作對象時候 能訪問的元素
還有一些派生類的類型判斷的值也可以通過Symbol屬性對應的對象接口來改造