手撕object.assign
浅拷贝Object.assign()
用于将对象自身所有的可枚举属性从一个或者多个源对象上复制到目标对象
Object.myAssign = function (target, ...src) {
for (let i = 0; i < src.length; i++) {//遍历要拷贝的对象
if (src[i] !== null || src[i] !== undefined) {
// 过滤掉源对象为null和undefined的情况
for (let key in src[i]) {
// in运算符会查找原型对象上的可枚举属性,所以需要通过Object.prototype.hasOwnProperty方法过滤掉对象原型对象上的属性
if (src[i].hasOwnProperty(key)) {
target[key] = src[i][key]
}
}
}
}
return target
}
typescript版本:
function objectAssign(//把目标对象合并到原对象
origin: Record<string, any>,//record为ts的高级类型,
target: Record<string, any>
) {
const originKeys = Object.keys(origin)//获取对象的键,返回一个数组
const targetKeys = Object.keys(target)
// 找到新增的属性则更新
targetKeys.map((key) => {
if(target[key]===null ||===undefined) continue;
origin[key] = target[key]
})
return origin
}
阅读剩余
版权声明:
作者:chun
链接:https://chun53.top/1451.html
文章版权归作者所有,未经允许请勿转载。
THE END