首页 >web前端 >js教程 >为什么 Array.prototype.fill() 创建共享对象引用,以及如何避免它?

为什么 Array.prototype.fill() 创建共享对象引用,以及如何避免它?

DDD
DDD原创
2024-12-18 17:46:14746浏览

Why Does Array.prototype.fill() Create Shared Object References, and How Can I Avoid It?

Array.prototype.fill() 引用而不是创建新实例

尝试使用 Array.prototype.fill( 初始化数组时),当填充值为对象时,行为可能会出现意外。在这种情况下,对同一对象的引用存储在数组的每个元素中,导致意外共享属性和行为。

要解决此问题,建议使用诸如 map() 之类的替代方法为数组中的每个元素创建对象的新实例。这可以通过首先用任意值填充数组,然后将每个元素映射到一个新对象来实现:

var arr = new Array(2).fill().map(u => ({}));

或者,您可以使用 Object() 作为映射器为每个元素创建一个新对象数组元素:

var arr = new Array(2).fill().map(Object);

通过采用这些技术,您可以确保填充数组中的每个元素都是独立的对象,从而消除与共享相关的潜在问题参考文献。

以上是为什么 Array.prototype.fill() 创建共享对象引用,以及如何避免它?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn