实现Object.assign

230 阅读1分钟

Object.assign()可以接收多个参数,第一个参数是目标对象,后面的都是源对象,assign方法将多个原对象的属性和方法都合并到了目标对象上面,如果在这个过程中出现同名的属性(方法),后合并的属性(方法)会覆盖之前的同名属性(方法)

Object.assign1=function(target,...args){
  if(target==null){
    throw new TypeError('Cannot convert undefined or null to object')
  }
  let res=Object(target)
  args.forEach(item=>{
    if(item!=null){
      for(let key in item){
        if(item.hasOwnProperty(key)){
          res[key]=item[key]
        }
      }
    }
  })
  return res
}
const obj=Object.assign1({name:'1'},{age:18},{sex:20},{name:'2'})
console.log(obj)