方法:Object.assign()
作用:將sourse對象的 值 賦值給目標對象,兩者都有的會覆蓋,target獨有會保留,sourse獨有會添加
使用方法:
Object.assign方法實行的是淺拷貝,而不是深拷貝。也就是說,如果源對象某個屬性的值是對象,那么目標對象拷貝得到的是這個對象的引用。
1
2
3
4
5
6
7
|
var object1 = { a: { b: 1 } }; ar object2 = Object.assign({}, object1); object1.a.b = 2; console.log(object2.a.b); |
2.用途
2.1為對象添加屬性
2.2為對象添加方法
2.3克隆對象
1
2
3
4
5
6
7
|
function copyFnc(origin) { return Object.assign({}, origin)} var sur = { a: 1, b: 2 }; console.log(copyFnc(sur)); |
上面代碼將原始對象拷貝到一個空對象,就得到了原始對象的克隆。
不過,采用這種方法克隆,只能克隆原始對象自身的值,不能克隆它繼承的值。如果想要保持繼承鏈,可以采用下面的代碼。
1
2
3
4
5
6
7
|
function clone(origin) { let originProto = Object.getPrototypeOf(origin); return Object.assign(Object.create(originProto), origin); } |
在JS里子類利用Object.getPrototypeOf去調用父類方法,用來獲取對象的原型。
2.4 合并多個對象
//多個對象合并到某個對象
1
|
const merge = (target, ...sources) => Object.assign(target, ...sources); |
//多個對象合并到新對象
1
|
const merge = (...sources) => Object.assign({}, ...sources); |
2.5為屬性指定默認值
1
2
3
4
5
|
const DEFAULTS = { logLevel: 0, outputFormat: 'html' }; function processContent(options) {let options = Object.assign({}, DEFAULTS, options); } |
到此這篇關于詳解ES6 Object.assign()的用法及用途的文章就介紹到這了,更多相關ES6 Object.assign()的用法內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/weixin_42671417/article/details/109184745