對象的理解和解構賦值

這篇文章是看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)

後面會更新建立對象的幾種模式。

相關文章
相關標籤/搜索