Object.assign

2025 年 3 月 26 日 星期三(已编辑)
1
这篇文章上次修改于 2025 年 3 月 26 日 星期三,可能部分内容已经不适用,如有疑问可询问作者。

Object.assign

Object.assign

function assign(target: object, ...sources: any[]): object {
  if (!isObject(target)) {
    throw new TypeError('The target must be an Object not a function')
  }
  sources.forEach(source => {
    let descriptors = Object.keys(source).reduce((descriptor, key) => {
      descriptor[key] = Object.getOwnPropertyDescriptor(source, key)
      return descriptor
    }, {})
    // assign enumerable Symbols
    Object.getOwnPropertySymbols(source).forEach(sym => {
      let descriptor = Object.getOwnPropertyDescriptor(source, sym)
      if (descriptor?.enumerable) {
        descriptors[sym] = descriptor
      }
    })
    // assign descriptors to target
    Object.defineProperties(target, descriptors)
  })
  
  return target
}

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...