手写Object.assign(),但是无法赋值Symbol属性
function myAssign(target, ...args) {
if (target == null || target == undefined) throw Error('')
// 参数为基本类型,先装箱
target = Object(target)
for (let i = 0; i < args.length; i++) {
let item = args[i]
for (let key in item) {
if (item.hasOwnProperty(key)) {
target[key] = item[key]
}
}
}
return target
}
let a = Symbol('')
console.log(myAssign({}, { [a]: 1, b: 2 })) // {b:2}
这是Symbol的特性之一,用于模拟私有变量,不会被常规的方法遍历到(除了 Object.getOwnPropertySymbols),