만약 Path라는 클래스 내부에 이렇게 getter, setter 함수가 들어가있다면,
(즉 fileSize()는 getter 함수만 있고, root()와 dir()는 getter함수와 setter 함수 모두 존재하는 경우)
get fileSize() {
return this._fileSize;
}
get root() {
return this._root;
}
set root(value) {
this._root = value;
this._updatePath();
}
get dir() {
return this._dir;
}
set dir(value) {
this._dir = value;
this._updatePath();
}
이렇게 setter 함수가 없는 fileSize를 변경하려고 할 때,
오류는 나지 않고 그냥 할당을 무시해버립니다.
const test = new Path('/home/user/boost/camp.txt');
// 정상적으로 set 동작 O
test.root = "/mnt";
test.dir = "/user/boost";
// 오류는 나지 않고 할당 무시
test.fileSize = 100;
unixPaths.display();
이렇게 setter 함수가 있던 root와 dir에 대한 할당은 제대로 진행하지만,
setter 함수가 없던 fileSize는 할당을 무시한 채로 반환합니다.
하지만 만약 js가 strict mode
에서 실행 중이라면 오류(TypeError
)가 발생합니다.
(스크립트 파일 상단에 "use strict";
라고 선언하면 strict mode
가 실행됩니다.)
getter, setter 함수에 대한 내용은 이 블로그에 잘 정리되어 있는 것 같아 첨부합니다.