Javascript之Object.assign()

来源:互联网 发布:seo零基础 编辑:程序博客网 时间:2024/05/16 19:25

Object.assign() 方法用于将所有可枚举的属性的值从link一个或多个源对象复制到目标对象。它将返回目标对象

详细描述可以参见:Object.assign() - JavaScript | MDN

源码如下:

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

对于不支持该属性的浏览器:

Object.assign = function () {    let list = arguments; let f = list[0]; let last = list[list.length - 1];    let count = list.length;    if (last === true) count--    for (var i = 1; i < count; i++) {        let p = list[i];        if (last === true) p = JSON.parse(JSON.stringify(p));        if (p instanceof Array) {            for (let i = 0; i < p.length; i++) f[i] = p[i];        }        else {            for (let a in p) f[a] = p[a];        }    }    return f;}

注:最后一参设为true,可以实现简单得深拷贝。

原创粉丝点击