在使用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)
我想知道这些方法及其区别的正确术语是什么。我在这里以数组为例,但是我确定 一般而言,对象也是如此。 感谢您的帮助。谢谢。
答案 0 :(得分:2)
正确的术语是 mutator 和 accessor 。
mutator method 变异(更改)被调用的对象,而访问器访问(返回返回)被调用的对象的值上。
通过查看Array.prototype
的方法列表,可以看到两种类型的示例。请注意,它们分为几类,其中两类是Mutator methods(“这些方法修改数组” )和Accessor methods(“这些方法不修改数组并返回该数组的某种表示形式。“ )
不能在immutable objects上调用mutators。
另请参见有关软件工程SE的以下相关问题:What is the term used to describe a function/method that modifies the object it's called on?
答案 1 :(得分:0)
您要查找的术语是“不可变”和“可变”。 Array.prototype.sort
是一种可变方法,它可以“变异”(更改)原始数组,其中Array.prototype.slice
是不可变的,因为它会创建一个带有结果的新数组,并使原始数组保持不变。