关于不同内置数组方法 Javascript 的术语
Posted
技术标签:
【中文标题】关于不同内置数组方法 Javascript 的术语【英文标题】:Terminology regarding different built-in array methods 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)
我想知道这些方法及其差异的正确术语是什么。我在这里以数组为例,但我确信 一般的对象可能也是如此。 我很感激任何帮助。谢谢。
【问题讨论】:
这不在 SO,但回答你的问题:What is the term used to describe a function/method that modifies the object it's called on? 【参考方案1】:正确的术语是 mutator 和 accessor。
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
以上是关于关于不同内置数组方法 Javascript 的术语的主要内容,如果未能解决你的问题,请参考以下文章
Web前端技术分享:Javascript中的内置对象数组讲解
[JavaScript]_[初级]_[关于forin或for...in循环语句的用法]
[JavaScript]_[初级]_[关于forin或for...in循环语句的用法]