Array Method
- Mutable : push(), unshift(), pop(), shift(), splice()
- Immutable : slice(), concat(), join(), indexOf(), includes()
Array Method는 String Method가 모두 Immutable인 것과 달리 Mutable과 Immutable 유형이 나뉘어 있습니다.
String Method
- Immutable : slice(), concat(), substring(), split(), indexOf(), includes()
String Method에 Mutable인 경우가 없다는 것은 문자열 상태에서 각각의 문자는 바꿀 수 없다는 것입니다. 그리고 split()과 substring()의 경우를 제외하고 문자열이든 배열이든 공통적으로 사용되는 메소드들이 있는데(length
도 공통 사용), 이 또한 문자열이 곧 Immutable한 배열이라는 개념과 일맥 상통합니다.
substring()은 slice()와 같은 개념의 메소드인데 다만 문자열의 경우에만 사용됩니다. 그리고 concat()은 문자 하나만 연결하든 문자열을 연결하든 모두 가능하다는 개념이 그대로 배열에도 적용되어 요소 하나만 연결하든 배열을 연결하든 모두 가능합니다.
'abc'.substring(1); // 'bc'
'abc'.slice(1); // 'bc'
['a','b','c'].slice(1); // ['b','c']
'abc'.concat('d'); // 'adcd'
'abc'.concat('def'); // 'adcdef'
['a','b'].concat('c'); // ['a','b','c']
['a','b'].concat(['c','d']); // ['a','b','c','d']
결론적으로 slice(), concat()을 이용해 배열이든 문자열이든 원본을 변화시키지 않고 그 일부 혹은 확장된 형태의 복사본을 만들어 낼 수 있습니다. 다시 강조하자면 slice()와 concat()을 사용함으로써 반환되는 배열이나 문자열은 원본과 다른 주소값을 가지는 복사본입니다.