栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

修改JavaScript对象的副本会导致原始对象发生更改

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

修改JavaScript对象的副本会导致原始对象发生更改

显然,您对声明的

var tempMyObj = myObj;
功能有一些误解。

在Javascript中,对象是通过引用传递和分配的(更准确地说是引用的值),所以

tempMyObj
myObj
都是对同一对象的引用。

这是一个简化的插图,可以帮助您可视化正在发生的事情

// [Object1]<--------- myObjvar tempMyObj = myObj;// [Object1]<--------- myObj//         ^ //         |//         ----------- tempMyObj

如您在分配后所看到的,两个引用都指向同一对象。

如果需要修改一个而不是另一个,则需要 创建一个副本

// [Object1]<--------- myObjconst tempMyObj = Object.assign({}, myObj);// [Object1]<--------- myObj// [Object2]<--------- tempMyObj

旧答案:

这是创建对象副本的其他几种方法

由于您已经在使用jQuery:

var newObject = jQuery.extend(true, {}, myObj);

使用香草Javascript

function clone(obj) {    if (null == obj || "object" != typeof obj) return obj;    var copy = obj.constructor();    for (var attr in obj) {        if (obj.hasOwnProperty(attr)) copy[attr] = obj[attr];    }    return copy;}var newObject = clone(myObj);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406341.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号