javascript - js 对象深拷贝和赋值
问题描述
代码中得到一个数组arr=[1,2,3];因为马上会被销毁,所以不能直接赋值给对象Obj.a,请问这种情况jquery如何写,使得arr销毁之后Obj.a=[1,2,3]?
问题解答
回答1:一般情况下很少会在 JS 中遇到“销毁”。然后,我不明白你所谓的立即销毁是指什么?
如果是指 delete arr,那么直接赋值也不会有问题,如下图:

如果你是要改变 arr 的内容。那么可以复制一个数组(有几种方法,concat 只是其中一种)
Obj.a = [].concat(arr);
如果确实需要深拷贝,jQuery.fn.clone(),不过貌似有一些限制。
如果其它数据,自己写深拷贝还是有点难度也比较麻烦,不如用 Lodash 的 cloneDeep()
回答2:拷贝数组:
利用 sliceobj.a = arr.slice();

obj.a = JSON.parse( JSON.stringify(arr));

没看懂你销毁的意思。。。。至于深拷贝:
function cloneObj(obj){ if( !obj || typeof obj == 'string' ){return obj; } else if ( obj instanceof Array ){return [].concat(obj); } else {var tempObj = {};for( var key in obj ){ tempObj[key] = cloneObj(obj[key]);}return tempObj; }}回答4:
如果你使用 ES2015 的话,可以使用对象展开运算符来拷贝。
obj.a = [...arr]
相关文章:
1. docker容器呢SSH为什么连不通呢?2. yii2 - MySQL [23000] Column cannot be null3. javascript - 页面滚动条出现时如何防止页面跳动4. css - 关于父元素div滚动条不正确问题5. nginx - 【win7】80 端口本机可访问,同内网其他机器不能访问,未被占用!6. javascript - 关于向java后台上传base64位字符串的图片数据,求助7. javascript - node.js后台设置token过期时间出现的问题8. css3动画 - css3 transition设置多个属性的时候不能只用逗号分隔?9. javascript - 使用node multer如何上传文件到多台服务器?10. python - pip安装任何包都出现问题: Cannot unpack file /tmp/pip-KzJgHD-unpack/simple

网公网安备