詳解ES6 中的Object.assign()的用法例項程式碼
阿新 • • 發佈:2021-01-13
方法:Object.assign()
作用:將sourse物件的 值 賦值給目標物件,兩者都有的會覆蓋,target獨有會保留,sourse獨有會新增
使用方法:
Object.assign方法實行的是淺拷貝,而不是深拷貝。也就是說,如果源物件某個屬性的值是物件,那麼目標物件拷貝得到的是這個物件的引用。
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克隆物件
function copyFnc(origin) { return Object.assign({},origin)} var sur = { a: 1,b: 2 }; console.log(copyFnc(sur));
上面程式碼將原始物件拷貝到一個空物件,就得到了原始物件的克隆。
不過,採用這種方法克隆,只能克隆原始物件自身的值,不能克隆它繼承的值。如果想要保持繼承鏈,可以採用下面的程式碼。
function clone(origin) { let originProto = Object.getPrototypeOf(origin); return Object.assign(Object.create(originProto),origin); }
在JS裡子類利用Object.getPrototypeOf去呼叫父類方法,用來獲取物件的原型。
2.4 合併多個物件
//多個物件合併到某個物件
const merge = (target,...sources) => Object.assign(target,...sources);
//多個物件合併到新物件
const merge = (...sources) => Object.assign({},...sources);
2.5為屬性指定預設值
const DEFAULTS = { logLevel: 0,outputFormat: 'html'}; function processContent(options) {let options = Object.assign({},DEFAULTS,options); }
到此這篇關於詳解ES6 Object.assign()的用法及用途的文章就介紹到這了,更多相關ES6 Object.assign()的用法內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!