在什么情况下我们会在 javascript 中创建新的内存引用?
In what instances do we create new memory references in javascript?
我在这里遇到了一个关于参考与价值的问题
https://gist.github.com/MeeranB/238e085aac8a9abc53ad8a297b03671c
基本上我已经选择了一个 HTMLCollection,并使用 Array.from 方法将它转换为一个数组,但是我有点困惑,因为使用Array.from 方法完全创建了一个新数组,因此我假设将这个新数组存储在内存中的不同地址。
我预计在我的 forEach 循环之后只有 divsWithClassArray 对象会发生变化,而 divsWithClass HTMLCollection 不会发生变化
有人能解释一下这里的背景吗?
/* Assigns divsWithClass HTMLCollection object value to place 1 in
memory */
const divsWithClass = document.getElementsByClassName("div-class");
//Assigns Array object to place 2 in memory
const divsWithClassArray = Array.from(divsWithClass);
divsWithClassArray.forEach(div => (div.style.color = "green"));
/* How does divsWithClassArray reference the same memory address as
divsWithClass
if the array.from method creates a new array and we assign it to a new
variable? */
如果你已经知道在这种情况下
const a = {x: 1};
const b = a;
b 和 a 都引用同一个对象 {x:1}
因此更改 b.x
会更改 a.x
- 然后将您的代码视为本质上是这样的
const divsWithClass = document.getElementsByClassName("div-class");
const divsWithClassArray = [];
for (let i = 0; i < divsWithClass.length; i++) {
divsWithClassArray.push(divsWithClass[i]);
// or divsWithClassArray[i] = divsWithClass[i]
}
以上是在 Array.from
存在于过去(2015 年之前?)之前我们必须做的事情的一种方式,并产生与
相同的结果
const divsWithClass = document.getElementsByClassName("div-class");
const divsWithClassArray = Array.from(divsWithClass);
我在这里遇到了一个关于参考与价值的问题 https://gist.github.com/MeeranB/238e085aac8a9abc53ad8a297b03671c 基本上我已经选择了一个 HTMLCollection,并使用 Array.from 方法将它转换为一个数组,但是我有点困惑,因为使用Array.from 方法完全创建了一个新数组,因此我假设将这个新数组存储在内存中的不同地址。
我预计在我的 forEach 循环之后只有 divsWithClassArray 对象会发生变化,而 divsWithClass HTMLCollection 不会发生变化
有人能解释一下这里的背景吗?
/* Assigns divsWithClass HTMLCollection object value to place 1 in
memory */
const divsWithClass = document.getElementsByClassName("div-class");
//Assigns Array object to place 2 in memory
const divsWithClassArray = Array.from(divsWithClass);
divsWithClassArray.forEach(div => (div.style.color = "green"));
/* How does divsWithClassArray reference the same memory address as
divsWithClass
if the array.from method creates a new array and we assign it to a new
variable? */
如果你已经知道在这种情况下
const a = {x: 1};
const b = a;
b 和 a 都引用同一个对象 {x:1}
因此更改 b.x
会更改 a.x
- 然后将您的代码视为本质上是这样的
const divsWithClass = document.getElementsByClassName("div-class");
const divsWithClassArray = [];
for (let i = 0; i < divsWithClass.length; i++) {
divsWithClassArray.push(divsWithClass[i]);
// or divsWithClassArray[i] = divsWithClass[i]
}
以上是在 Array.from
存在于过去(2015 年之前?)之前我们必须做的事情的一种方式,并产生与
const divsWithClass = document.getElementsByClassName("div-class");
const divsWithClassArray = Array.from(divsWithClass);