我应该使用Angular.copy()还是_.clone()?

我正在开发一个既有Angular又有Underscore作为依赖的项目。

当我需要创build一个对象的副本,根据我的心情,我可能会使用angular.copy()_.clone()

这发生在我身上,其中一种方法可能比另一种方法更加快速/可靠/强大。

是否有任何已知的问题,使这两个函数的使用比其他更好或更差,假设这两个库已经包括在内?

关于你的问题: angular.copy和_.clone是不同的。 凯文B在评论中表示,这不是一个更好的问题,而是关于你所需要的。

另一方面,angular.extend()是类似于_.clone的浅拷贝

Angular.copy和Angular.extend

性能明智,我不知道哪个更好,但出于意见的缘故,我反对将任何angular度的应用程序库包括到全局范围(下划线),因为通常这些东西写成angular度模块 。 在这种情况下,angular.copy / angular.extend会胜出。

浅/深层复制

它非常简单,如果对象只有原始字段,那么显然你会去浅层复制,但如果对象有其他对象的引用,那么基于请求,应该select浅拷贝或深拷贝。 我的意思是,如果引用没有随时修改,那么进行深层复制就没有意义了。 你可以select浅拷贝。 但是如果引用经常被修改,那么你需要去深入复制。 再次没有硬性规定,这一切都取决于要求。

资源

我们有一些错误报告,确认使用angular.copy在某些Windows手机上创build空对象。 所以如果你需要在手机上支持任何版本的IE,不要使用angular.copy! 据称这个bug已经被微软修复,但是我们不得不面对这个问题。

其实,你也可以使用Object.assign()

文档: https : //developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

更多示例: https : //googlechrome.github.io/samples/object-assign-es6/

我知道它说没有IE浏览器,但我试了我的IE11,它的工作原理…