這篇文章是看js紅寶書後,記錄的學習筆記。vue
訪問器屬性: 經過Object.defineProperty( )
來設置。當獲取屬性時,會調用屬性的獲取方法get( )
;當設置屬性時,會調用set( )
。Object.defineProperties(obj, {})
能夠用來定義對象obj的對個屬性。學習
Object.getOwnPropertyDescriptor(obj,key )
方法獲取對象obj指定屬性key的屬性描述符。Object.getOwnPropertyDescriptors(obj)
獲取obj的全部屬性。測試
Object.assign(targetObj, obj1, obj2)
將obj1,obj2對象的屬性混入到targetObj,Object.assign( )的返回值是對象targetObj,是淺複製。code
Object.is(val1, val2)
和三等號基本保持一致,Object.is( )方法方便使用的場景是NaN的判斷,好比:Object.is(NaN, parseInt('ss’))
返回值是true對象
1,屬性的簡寫ip
const name = ‘cc' const obj = {name}
2,可計算屬性get
const key = ‘xixi’ const obj = {[key]: ‘cc’}
3, 簡寫方法名,如 vue中methods定義的方法名。io
1, 將對象的屬性取出來,賦給一個全新變量
取的屬性不存在時,值是undefined;能夠給取的屬性加默認值console
const {name: objName, age: objAge} = {name: 'cc', age: 31} console.log(objName,objAge) // 'cc' 31
2,給null和undefined解構,會報錯
3,將對象的屬性取出來,解構給已存在的變量,解構語句要用括號括起來,它和它的上一句,句尾都要加上分號function
let name, age const obj = {name: 'cc', age: 31}; ({name, age} = obj);
通過測試,兩個分號缺一個,都會報錯。
4,嵌套解構。原對象和目標對象都存在時,能用嵌套解構給目標對象加屬性。隨時注意undefined的狀況和分號。
let objCopy = {} const obj = {name: 'cc', age: 31}; ({name: objCopy.name, age: objCopy.age} = obj); console.log(objCopy)
5, 部分解構。當解構進行中報錯時,已經解構的部分會解構成功,報錯以後的解構會失敗。
const obj = {name: 'cc', age: 31}; const objCopy = {}; try { ({name: objCopy.name, cc: objCopy.cc, foo: {bar: six}, age: objCopy.age}= obj); } catch (error) { } console.log(objCopy) // { name: 'cc', cc: undefined } age就沒有被解構出來
6,參數的上下文匹配。解構時,不會影響arguments對象。
const obj = {name: 'cc', age: 31}; function getKey(str, {name, age}, boolean) { console.log(arguments); // { '0': 'check', '1': { name: 'cc', age: 31 }, '2': true } console.log( age, name); // 31 "cc" } getKey('check',obj, true)
後面會更新建立對象的幾種模式。