欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > js手写代码篇--手写Object.assign

js手写代码篇--手写Object.assign

2025/12/16 6:16:02 来源:https://blog.csdn.net/2403_88913721/article/details/148720669  浏览:    关键词:js手写代码篇--手写Object.assign

19、Object.assign

作用:

Object.assign的作用是将源对象的所有可枚举属性复制到目标对象中。它返回目标对象。

 const obj1 = { a: 1, b: 2 };const obj2 = { b: 3, c: 4 };const obj3 = { d: 5 };const target = {};Object.assign(target, obj1, obj2, obj3);console.log(target); // { a: 1, b: 3, c: 4, d: 5 }

我的手写代码:

 // 手写:输入多个参数...参数,对参数进行遍历,保存再目标对象中function myAssign(target , ...args){// 1、对target进行判断if(target === null || target === undefied){return new TypeError('target不能为null或者undefied');}// 2、确保target是一个对象target === typeof target === 'object' ? target : Object(target);// 3、循环args// console.log(args);args.forEach((item) => {// 4、遍历item的每个属性for(let key in item){if(item.hasOwnProperty(key)){target[key] = item[key];}}})// 5、返回targetreturn target}

测试结果:

  console.log(myAssign(target, obj1, obj2, obj3)); // { a: 1, b: 3, c: 4, d: 5 }

总结:

因为之前做的浅拷贝有这个函数,写的时候觉得和浅拷贝差不多,最开始没有对target继续宁类型判断只有7分,后面就添加了一个判断。总的思路其实就是遍历传来的参数,遍历参数的属性,添加属性到目标数组就可以了。
注意,item不是可迭代对象,在遍历它的属性的时候要使用for…in

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词