【问题标题】:Terminology regarding different built-in array methods Javascript关于不同内置数组方法 Javascript 的术语
【发布时间】:2019-11-16 13:02:15
【问题描述】:

在 Javascript 中使用可用于数组的内置方法时,某些方法将直接作用于调用数组。 例如,myArray.sort() 将按字母或数字升序对 myArray 进行排序。

myArray.sort();
// sort() acts directly on myArray, changing it in its place thereafter
// ... also myArray.reverse() amongst others.

而其他方法,例如 slice(),需要有一些东西,要么是变量,要么是其他输出,才能将其值返回给...

var need_a_new_array = myArray.slice(10, 21);
// a new placeholder is needed for the results of slice... if not using 
// the results immediately (i.e. passing to another function or 
// outputting the results)

我想知道这些方法及其差异的正确术语是什么。我在这里以数组为例,但我确信 一般的对象可能也是如此。 我很感激任何帮助。谢谢。

【问题讨论】:

标签: javascript arrays methods terminology


【解决方案1】:

正确的术语是 mutatoraccessor

mutator method变异(更改)它被调用的对象,而访问器访问(并返回)它被调用的对象的值。

您可以通过查看Array.prototype 的方法列表来查看这两种类型的示例。注意它们是分门别类的,其中两个是Mutator methods("这些方法修改数组")和Accessor methods("这些方法不修改数组,返回一些数组的表示。")

不能在immutable objects 上调用突变器。

另请参阅有关软件工程 SE 的相关问题:What is the term used to describe a function/method that modifies the object it's called on?

【讨论】:

  • 谢谢赫罗塔!直接来自 MDN。我猜无法反驳。
【解决方案2】:

您要查找的术语是 'immutable' 和 'mutable' 。 Array.prototype.sort 是一种可变方法,因为它“变异”(更改)原始数组,而 Array.prototype.slice 是不可变的,因为它使用结果创建一个新数组并保持原始数组不变。

【讨论】:

  • 哇,感谢您提供超快速简洁的答案!
  • 这是不正确的。 “可变”和“不可变”是指对象的术语——可以改变与不能改变的事物。
  • 差不多。正确的术语是mutating vs non-mutating
猜你喜欢
  • 2012-12-23
  • 1970-01-01
  • 1970-01-01
  • 2020-04-05
  • 2010-12-03
  • 2011-04-19
  • 1970-01-01
  • 2012-08-25
相关资源
最近更新 更多