今天的內容相對的簡單很多,只是在做練習時突然發現自己對於assign的用法其實並不熟悉
我們先看一下語法
Object.assign(target,source) 其中target表示你欲加入的物件內容,source則表示你新物件的原始資料。
舉個簡單的情境,今天你有個物件是學生的資料,當每次有新的學生入學時候你可能會有以下的想法
- 利用之前的function factory作法做一筆新的學生資料
- 重新建立一個結構一樣的物件
兩種方法都很合理,不過要是今天你想保留舊有的學生資料結構並在這個基礎上新增資料你該怎麼處理?這時候Object.assign()就該出馬了,看一下以下的簡單例子。
const student = {
name:'Danny',
age:27,
id:9831032
}
const new_student = Object.assign({school:'NTHU'},student)
console.log(student) //{ name: 'Danny', age: 27, id: 9831032 }
console.log(new_student) //{ school: 'NTHU', name: 'Danny', age: 27, id: 9831032 }
要特別注意的是target&source的位置,assign語法並不會修改原始資料,所以要是位置放相反你便會動到你不想動到的資料! 下面順便複習一下 function factory 的作法
const students = (name,age,id)=> {return {
name,
age,
id}}
let bob = students('Bob',18,9831045)
console.log(bob) //{ name: 'Bob', age: 18, id: 9831045 }