为什么 JavaScript 中的某些方法会复制所调用的对象?
Why some methods in JavaScript make a copy of the object invoked?
在 JavaScript 中,一些方法会复制调用它的对象,而另一些则不会。
例如:
var numbers = [1, 2, 3, 4, 5];
numbers.map(function(x) { return x + 1 });
console.log(numbers); // [1, 2, 3, 4, 5];
它会复制 "numbers",您必须将其设置为另一个变量。
鉴于:
var numbers = [1, 2, 3, 4, 5];
numbers.reverse();
console.log(numbers); // [5, 4, 3, 2, 1];
它直接改变了"numbers"。谁能解释一下为什么?
javascript中的数组方法大致分为三类
- 增变方法
- 访问器方法
- 迭代方法
Mutator 方法 - 例如:reverse()、push() 等:修改数组。顾名思义,这些方法会改变调用它们的数组。
访问方法 - 例如:include()、concat() 等: - 不要修改数组和 return array.i 的某些表示.e 一个新数组是 returned,它是修改后的数组。
迭代方法 -Ex : filter(), map()- 将处理数组时回调的函数作为参数。在这些方法中,数组的长度已经是 sampled/copied 并且回调是在这个数组上执行的。
泛型方法(非标准) - EX: join() 这些方法本质上是泛型的,适用于“看起来像”数组的对象。
详细解释见下文link:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype
希望对您有所帮助!!!
这是由于将方法纳入 JavaScript 的时间不同所致。
的第一个版本中有反向方法
该地图是最近在第 5 版中添加的。
如今,语言的功能性越来越强。函数式语言的主要原则之一是数据的不变性。因此,数组的这些新方法(即 map、filter 等)是有效的,不会更改源数组。
在 JavaScript 中,一些方法会复制调用它的对象,而另一些则不会。
例如:
var numbers = [1, 2, 3, 4, 5];
numbers.map(function(x) { return x + 1 });
console.log(numbers); // [1, 2, 3, 4, 5];
它会复制 "numbers",您必须将其设置为另一个变量。
鉴于:
var numbers = [1, 2, 3, 4, 5];
numbers.reverse();
console.log(numbers); // [5, 4, 3, 2, 1];
它直接改变了"numbers"。谁能解释一下为什么?
javascript中的数组方法大致分为三类 - 增变方法 - 访问器方法 - 迭代方法
Mutator 方法 - 例如:reverse()、push() 等:修改数组。顾名思义,这些方法会改变调用它们的数组。
访问方法 - 例如:include()、concat() 等: - 不要修改数组和 return array.i 的某些表示.e 一个新数组是 returned,它是修改后的数组。
迭代方法 -Ex : filter(), map()- 将处理数组时回调的函数作为参数。在这些方法中,数组的长度已经是 sampled/copied 并且回调是在这个数组上执行的。
泛型方法(非标准) - EX: join() 这些方法本质上是泛型的,适用于“看起来像”数组的对象。
详细解释见下文link: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype
希望对您有所帮助!!!
这是由于将方法纳入 JavaScript 的时间不同所致。
的第一个版本中有反向方法该地图是最近在第 5 版中添加的。
如今,语言的功能性越来越强。函数式语言的主要原则之一是数据的不变性。因此,数组的这些新方法(即 map、filter 等)是有效的,不会更改源数组。