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中文网其他相关文章!