Терминология относительно различных встроенных методов массива Javascript - PullRequest
0 голосов
/ 06 июля 2019

При использовании встроенных методов, доступных для массивов в 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)

Мне было интересно, какова правильная терминология для этих методов и их различий.Я использую массивы в качестве примера здесь, но я уверен, что то же самое, вероятно, справедливо для объектов в целом.Я ценю любую помощь.Спасибо.

Ответы [ 2 ]

2 голосов
/ 06 июля 2019

Правильные термины: мутатор и аксессор .

A метод мутатора мутирует (изменяет) вызываемый объект, в то время как метод доступа обращается к (и возвращает) значение объекта, которым он является звонил.

Примеры двух типов можно увидеть, просмотрев список методов для Array.prototype. Обратите внимание, что они разделены на категории, две из которых Методы Mutator ( "Эти методы изменяют массив" ) и Методы доступа ( "Эти методы не модифицируют массив и возвращают некоторое представление массива. ")

Мутаторы нельзя вызывать на неизменных объектах .

См. Также этот связанный вопрос о программной инженерии SE: Какой термин используется для описания функции / метода, который модифицирует объект, к которому он вызывается?

0 голосов
/ 06 июля 2019

Вы ищете термины «неизменяемые» и «изменяемые».Array.prototype.sort является изменяемым методом в том смысле, что он «изменяет» (изменяет) исходный массив, где Array.prototype.slice неизменен, поскольку создает новый массив с результатом и оставляет исходный массив без изменений.

...