1. 程式人生 > 實用技巧 >Object.assign()深拷貝的用法、以及在IE瀏覽器不相容的解決方案

Object.assign()深拷貝的用法、以及在IE瀏覽器不相容的解決方案

原文連結:https://blog.csdn.net/lgysjfs/java/article/details/91429600

1、Object.assign()的用法

ES5提供的Object.assign()原型方法,主要是用來解決拷貝出來的新物件和原來的物件不相互影響的問題。

主要用法有:

一、複製一個物件

let obj1 = { a: 0 , b: { c: 0}}; 
let obj2 = Object.assign({}, obj1); 
console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}}

二、合併多個物件

const o1 = { a: 1, b: 1, c: 1 };
const o2 
= { b: 2, c: 2 }; const o3 = { c: 3 }; const obj = Object.assign({}, o1, o2, o3); console.log(obj); // { a: 1, b: 2, c: 3 }

更多用法可以檢視 ——》MDN文件

2、IE瀏覽器不相容Object.assign()

解決辦法:重寫Object.assign()的原型方法

if (typeof Object.assign != 'function') {
    Object.assign = function(target) {
        
'use strict'; if (target == null) { throw new TypeError('Cannot convert undefined or null to object'); } target = Object(target); for (var index = 1; index < arguments.length; index++) { var source = arguments[index]; if (source != null
) { for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } } return target; }; }