Object.assign的一些用法
用法1:替換數組的值
let a = [1,2,3],b = [4,5]
console.log( Object.assign(a,b)); // 后面的值覆蓋前面的值,[4,5,3]
用法2:為對象添加屬性
下面是es5的寫(xiě)法:this.xxx =xxx
// es5的寫(xiě)法
class Test{
constructor(x,y){
this.x =x
this.y = y
}
sum(){
return this.x + this.y
}
}
let t = new Test(1,2)
console.log(t.sum());
用Object.assign的寫(xiě)法
// Object.assign的寫(xiě)法
class Test2{
constructor(x,y){
Object.assign(this,{x,y})
}
sum2(){
return this.x + this.y
}
}
let t2 = new Test2(1,2)
console.log(t2.sum2());
用法3 深度克隆對象
// 用法3 深度克隆對象
let clone = (orignObj) => {
let originProto = Object.getPrototypeOf(orignObj)
return Object.assign(Object.create(originProto), orignObj)
}
let obj3 = { name: 'zs', age: 12 }
console.log(clone(obj3));
用法4:合并對象屬性
下面這種寫(xiě)法,合并后,原來(lái)的兩個(gè)對象都已經(jīng)改變
// example1
let obj = {name:'zs'} ,obj2 = {name:'zs',age:12}
let merge = (target, ...v) => Object.assign(target, ...v)
console.log(merge(obj,obj2));// {name:'zs',age:12}
console.log(obj,obj2); // 合并后,兩個(gè)對象都已經(jīng)改變,值都是 {name:'zs',age:12}
如果不想改變原來(lái)的對象,可以用下面這個(gè)寫(xiě)法
// example2 合并后,返回一個(gè)新對象,不更改原有對象的屬性
let merge2 = (...v) => Object.assign({}, ...v)
console.log(merge2(obj, obj2));// {name:'zs',age:12}
console.log(obj); // 原來(lái)的對象保持原樣 {name:'zs'}
console.log(obj2); // 原來(lái)的對象保持原樣 {name:'zs',age:12}
//合并對象,還可以用展開(kāi)操作符
let obj5 = {name:'zs'},obj6 = {age:12}
let newOjb = {...obj5,...obj6}
console.log(newOjb);
用法5.為默認對象新增屬性
const DEFAULTS = { name: 'zs', age: 13 } // 默認對象
let createObjWithDefault = (opt) => Object.assign({}, DEFAULTS, opt)
console.log(createObjWithDefault({ 'addr': 'gz' }));
- 相關(guān)閱讀
- 啟用新版文章管理系統
- asp遍歷站點(diǎn)所有文件夾的代碼
- 圖片上傳時(shí),如果格式不正確,跳出警告
- ASP技巧:讓Len,Left,Right函數識別中文
- asp之自動(dòng)閉合UBB標簽函數
- asp在線(xiàn)把整站打包成為.mdb形式文件
- 旅行社網(wǎng)站模板12
- 深山旅行社網(wǎng)站管理系統 v1.6
- 共有0條關(guān)于《Object.assign的一些用法》的評論
- 發(fā)表評論
呢 稱(chēng): | |
表 情: | |
內 容: |
評論內容:不能超過(guò) 1000 字,需審核,請自覺(jué)遵守互聯(lián)網(wǎng)相關(guān)政策法規。 |
驗證碼: | |
您發(fā)布的評論即表示同意遵守以下條款:
一、不得利用本站危害國家安全、泄露國家秘密,不得侵犯國家、社會(huì )、集體和公民的合法權益;
二、不得發(fā)布國家法律、法規明令禁止的內容;互相尊重,對自己在本站的言論和行為負責;
三、本站對您所發(fā)布內容擁有處置權。
- 更多信息>>欄目類(lèi)別選擇
- 百度小程序開(kāi)發(fā)
- 微信小程序開(kāi)發(fā)
- 微信公眾號開(kāi)發(fā)
- uni-app
- asp函數庫
- ASP
- DIV+CSS
- HTML
- python
- 更多>>同類(lèi)信息
- javascript獲取瀏覽器指紋可以用來(lái)做投票
- 火狐Mozilla Firefox出現:無(wú)法載入您的Firefox配置文件 它可能已經(jīng)丟失 或是無(wú)法訪(fǎng)問(wèn) 問(wèn)題解決集合處理辦法
- DW設置之后更好用 DreamweaverCS編輯GB2312與UTF-8文件在代碼視圖中點(diǎn)擊鼠標錯位問(wèn)題的解決辦法
- js指定日期加n天加n月加n年
- jquery中動(dòng)態(tài)生成的代碼使用on hover事件時(shí)不出現效果
- iframe里阻止_blank彈出新窗口的方法
- 更多>>最新添加文章
- 抖音直播音掛載小雪花 懂車(chē)帝小程序
- javascript獲取瀏覽器指紋可以用來(lái)做投票
- 火狐Mozilla Firefox出現:無(wú)法載入您的Firefox配置文件 它可能已經(jīng)丟失 或是無(wú)法訪(fǎng)問(wèn) 問(wèn)題解決集合處理辦法
- 在A(yíng)ndroid、iOS、Windows、MacOS中微信小程序的文件存放路徑
- python通過(guò)代碼修改pip下載源讓下載庫飛起
- python里面requests.post返回的res.text還有其它的嗎
- aliyun阿里云續費域名優(yōu)惠口令(注冊、續費都可以使用)
- windows7環(huán)境下安裝配置jdk