问题
I am writing an Array-derived class in JavaScript and need to know which functions to overload so that I can be aware of changes made to the array.
I know Array.push()
and Array.splice()
are mutating. Is there a definitive list of any others?
回答1:
You can find the list on MDN as Mutator methods (along with Accessor and Iteration methods):
- copyWithin
- fill
- pop
- push
- reverse
- shift
- sort
- splice
- unshift
回答2:
You can also use .concat()
, before using your mutation method, to ensure you are not mutating your arrays, eg
const dontMutateMe = [4,5,1,2,3];
const sortArray = dontMutateMe.concat().sort(...)
回答3:
I found this website called Doesitmutate
Have the list of all functions - and tells whether it mutates or not.
来源:https://stackoverflow.com/questions/9009879/which-javascript-array-functions-are-mutating