AngularJS:复制与扩展

2023-12-05

解释 :

我们遇到过一些情况,需要将一个对象复制到另一个对象。在这种情况下,我们可能有两种解决方案:角度.copy() or 角度.extend().

我面临的挑战:

据我们所知angular.copy(source, destination)创建源对象的深层副本并将其分配给目标。通过编写深度复制,我们的意思是创建了所引用对象的新副本并且其工作正常。

深拷贝代码:

var mySource = {'name' : 'Beta', 'age' : '24'}
var myDest = {}
angular.copy(mySource,myDest);
mySource.name = "Alpha";
console.log(mySource); // Object {name: "Alpha", age: "24"}
console.log(myDest); // Object {name: "Beta", age: "24"}
console.log(mySource.obj === myDest.obj); // false

这里,我修改源对象mySource.name = "Alpha"但它不影响目标对象myDest正如预期的那样。 如果我们检查mySource.obj === myDest.obj,这将给出 false,因为两者都指向不同的对象。

现在,我面临着问题angular.extend(destination, source)因为它创造了一个shallow copy意味着源和目标都将指向相同的地址。So, if i will modify source object then it will also reflect in destination object. But it's not happening.

浅拷贝代码:

var mySource = {'name' : 'Beta', 'age' : '24'}
var myDest = {}
angular.extend(myDest,mySource);
mySource.name = "Alpha";
console.log(mySource); // Object {name: "Alpha", age: "24"}
console.log(myDest); // Object {name: "Beta", age: "24"}
console.log(mySource.obj === myDest.obj); // True

jsfiddle:https://jsfiddle.net/U3pVM/24322/

由于我是新手,需要帮助来理解 angular.copy() 和 angular.extend() 的正确流程。

任何立即的帮助都将非常感激。谢谢


我更新了the code。现在 angular.extends 按您的预期工作。请记住,如果您传递 Angular.extends 一个空对象作为第一个参数(目标),然后传递源,Angular 将保留这两个对象并仅复制属性,就像 Angular.copy 一样。

// angular.copy()

var mySource = {'name' : 'sakshi', 'age' : '24', 'obj' :{'key':'value'}}
var myDest = angular.copy(mySource);

mySource.name = "Beta";
console.log(mySource); // Object {name: "Beta", age: "24", obj: Object}
console.log(myDest); // Object {name: "sakshi", age: "24", obj: Object}
console.log(mySource.obj === myDest.obj); // false

// angular.extend()

var mySource = {'name' : 'sakshi', 'age' : '24', 'obj' :{'key':'value'}}
var myDest = angular.extend(mySource);
mySource.name = "Beta";
console.log(mySource); // Object {name: "Beta", age: "24", obj: Object}
console.log(myDest); // Object {name: "Beta", age: "24", obj: Object}
console.log(mySource.obj === myDest.obj); // True
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS:复制与扩展 的相关文章

随机推荐

  • 如何在 R 中使用大数据对多个变量进行热编码?

    我目前有一个包含 260 000 行和 50 列的数据框 其中 3 列是数字 其余是分类 我想要对分类列进行一次热编码 以便执行 PCA 并使用回归来预测类别 我怎样才能在 R 中完成下面的例子 Example V1 V2 V3 V4 V5
  • 如何在gnuplot中绘制每行的图

    我有一个这种格式的文件 0 R1 R2 R3 R4 w1 I1 I2 I3 I4 w2 I1 I2 I3 I4 w3 I1 I2 I3 I4 在许多波长 w 中具有半径 R 和强度 I 的值 我想以二维方式绘制 第 1 行 半径 在 x 轴
  • 对 DataTrigger 条件的 Value 属性使用绑定

    我正在开发 WPF 应用程序并在数据触发器方面遇到困难 我想将触发条件的值绑定到我拥有的某个对象
  • Prolog - 继兄弟姐妹的链式法则

    我是 Prolog 的新手 有一个关于为共享 共同父母 的继兄弟姐妹编写 链式规则 的问题 在我的程序中 我假设存在父级 X Y 断言 X 是 Y 的父级的事实 我需要一个规则链 X Y L 如果 X 是一个ancestorY 的 则 L
  • 无法使 CSS 粘性页脚正常工作。我究竟做错了什么?

    嗯 这是我在这里发表的第一篇文章 我真的很喜欢这个网站 我已经启动了一个非常基本的 丑陋的 网站 由于某种原因 我无法让 CSS 粘性页脚在 FireFox 上工作 IE 可以工作 但 FF 将其显示在页面的中间位置 网址是http dev
  • 将 Woocommerce 中的免费送货优惠券的所有送货方式成本设置为零

    我的购物车中有 3 种运输方式 一旦您的客户输入免费送货优惠券 这些方式的价格就应该为零 我知道如何在functions php中添加过滤器来检测优惠券 但有人知道将购物车 单选按钮 中可见的运输方法设置为零的代码片段吗 我的送货方式是 U
  • IE 和 FF 中的 $(window).height() 问题

    我写了一个脚本来制作动态大小的div table 在我的页面内 我还有一个菜单 menu nav其中确定了最小高度 在 Chrome 和 Safari 中一切正常 但在 IE FF 中则不然 在这两种情况下 我都有同样的问题 如果我全屏加载
  • jquery从数据库填充多个下拉列表

    我知道如何使用 jQuery 用数据库中的值填充单个下拉框 但现在我需要进行一个长查询来使用下拉列表过滤掉 5 个表字段 也就是说 通过选择第一个 我需要更改其余 4 个下拉列表列表值 通过更改第二个下拉列表 我需要更改其他 3 个下拉列表
  • Android:解压缩使用 PHP gzcompress() 压缩的字符串

    如何解压缩由 PHP gzcompress 函数压缩的字符串 有完整的例子吗 thx 我现在这样尝试 public static String unzipString String zippedText throws Exception B
  • 无法对 Gatsby 站点的 Ant Design 表中的列进行排序

    我在 Gatsby 站点中实现了 Ant 设计表 我正在从 graphql 中提取数据 到目前为止 一切都运行良好 数据显示正确 分页正常等 现在我想添加对列进行排序的功能 为此 我设置了表和列 如下所示 table table
  • Chrome 扩展程序中的弹出窗口

    我正在编写一个 Chrome 扩展程序 我希望当用户单击上下文菜单时弹出一个登录窗口 以便用户可以输入用户名和密码 在 Chrome 扩展中 我只发现chrome pageAction setPopup and chrome browser
  • ofstream 不将缓冲区写入文件

    我正在尝试将 buf 指针的内容写入由 ofstream 创建的文件 由于某种原因 文件是空的 但是 buf 的内容从来不为空 我做错了什么 void DLog Log const char fmt va list varptr va st
  • createStoredProcedureQuery 未解决

    这是我的代码 createStoredProcedureQuery 在 eclipse 下有红线 并且没有解决 我尝试了很多方法仍然无法得到问题所在 private static EntityManagerFactory factory p
  • Erlang Ports:与类似“wc”的程序交互?

    我有一个外部 exe 程序 它从标准输入读取并生成结果 它的工作原理就像wc编程并读取直到EOF 或者更确切地说 流结束 Update 让我再添加一条解释 我基本上是在尝试编写一个 Erlang 管道 我可以在批处理文件中调用该程序 例如e
  • 如何将函数的值输出到调用者而不是控制台

    假设我有这个简单的 PowerShell 函数 function testit return true gt null Write Host testing thistest testit Write Host value thistest
  • 为Python脚本提供远程shell

    我想创建一种方便简单的方法来远程连接到正在运行的 Python 脚本 通过文件套接字 TCP 或其他方式 以获得远程交互式 shell 我认为通过 IPython 之类的东西这会很容易 然而 我并没有真正找到任何好的例子 我尝试开始IPyt
  • 更改 ggplot 中点的颜色填充和形状[重复]

    这个问题在这里已经有答案了 我想改变 ggplot 中点的形状和颜色填充 这是我部分工作的代码 颜色图例仍然是黑色 ID lt rep c KO WT each 4 O lt rep c HP NN each 2 times 2 Methi
  • Snow Leopard 上的 Xcode 4.5 和 iOS 6

    我希望开始 iOS 6 开发 我很久以前就在 iOS 4 上进行了开发 现在我的机器上运行着 Xcode 4 2 我还有一些以前的 iOS 版本的项目 我想下载最新的开发人员版本 Xcode 4 5 iOS 6 并开始在我的系统上进行开发
  • 使用 BULK INSERT 未正确导入重音字符

    我正在导入源 CSV 文件 我不知道源编码 只能看到其中之一 ANSI 编码 或 UTF8 without BOM 编码 当我打开文件时Notepad 相关问题 该文件已导入数据库mssql 2008 using bulk insert D
  • AngularJS:复制与扩展

    解释 我们遇到过一些情况 需要将一个对象复制到另一个对象 在这种情况下 我们可能有两种解决方案 角度 copy or 角度 extend 我面临的挑战 据我们所知angular copy source destination 创建源对象的深