object.assign
生活随笔
收集整理的這篇文章主要介紹了
object.assign
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
(1)淺拷貝
Object.assign方法實(shí)行的是淺拷貝,而不是深拷貝。也就是說(shuō),如果源對(duì)象某個(gè)屬性的值是對(duì)象,那么目標(biāo)對(duì)象拷貝得到的是這個(gè)對(duì)象的引用。
const obj1 = {a: {b: 1}};const obj2 = Object.assign({}, obj1);obj1.a.b = 2;obj2.a.b // 2(2)同名屬性的替換
對(duì)于這種嵌套的對(duì)象,一旦遇到同名屬性,Object.assign的處理方法是替換,而不是添加。
const target = { a: { b: 'c', d: 'e' } }const source = { a: { b: 'hello' } }Object.assign(target, source)// { a: { b: 'hello' } }常見用途
(1)為對(duì)象添加屬性
class Point {constructor(x, y) {Object.assign(this, {x, y});}}上面方法通過Object.assign方法,將x屬性和y屬性添加到Point類的對(duì)象實(shí)例。
(2)為對(duì)象添加方法
Object.assign(SomeClass.prototype, {someMethod(arg1, arg2) {···},anotherMethod() {···}});// 等同于下面的寫法
SomeClass.prototype.someMethod = function (arg1, arg2) {···};SomeClass.prototype.anotherMethod = function () {···};上面代碼使用了對(duì)象屬性的簡(jiǎn)潔表示法,直接將兩個(gè)函數(shù)放在大括號(hào)中,再使用assign方法添加到SomeClass.prototype之中。
(3)克隆對(duì)象
function clone(origin) {return Object.assign({}, origin);}上面代碼將原始對(duì)象拷貝到一個(gè)空對(duì)象,就得到了原始對(duì)象的克隆。
不過,采用這種方法克隆,只能克隆原始對(duì)象自身的值,不能克隆它繼承的值。如果想要保持繼承鏈,可以采用下面的代碼。
function clone(origin) {let originProto = Object.getPrototypeOf(origin);return Object.assign(Object.create(originProto), origin);}(4)合并多個(gè)對(duì)象
將多個(gè)對(duì)象合并到某個(gè)對(duì)象。
const merge =(target, ...sources) => Object.assign(target, ...sources);如果希望合并后返回一個(gè)新對(duì)象,可以改寫上面函數(shù),對(duì)一個(gè)空對(duì)象合并。
const merge =(...sources) => Object.assign({}, ...sources);(5)為屬性指定默認(rèn)值
const DEFAULTS = {logLevel: 0,outputFormat: 'html'};function processContent(options) {options = Object.assign({}, DEFAULTS, options);console.log(options);// ...}原文地址:http://es6.ruanyifeng.com/#docs/object 作者:阮一峰
總結(jié)
以上是生活随笔為你收集整理的object.assign的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 造梦无双宝石怎么合成
- 下一篇: 美篇怎么加图(美的定义是什么)