객체의 불변성은 객체가 생성된 후 어떤 방식으로든 변경되는 것을 원하지 않는다는 의미입니다(읽기 전용 유형으로 설정).
자동차 개체를 정의하고 프로젝트 전반에 걸쳐 해당 속성을 사용하여 작업을 수행해야 한다고 가정해 보겠습니다. 우리는 어떤 데이터도 잘못 수정되는 것을 허용할 수 없습니다.
const myTesla = { maxSpeed: 155, batteryLife: 300, weight: 2300 };
Object.preventExtensions() 확장 방지
이 메서드는 기존 객체에 새 속성을 추가하는 것을 방지하고, PreventExtensions()는 되돌릴 수 없는 작업이므로 객체에 추가 속성을 다시 추가할 수 없습니다.
Object.isExtensible(myTesla); // true Object.preventExtensions(myTesla); Object.isExtensible(myTesla); // false myTesla.color = 'blue'; console.log(myTesla.color) // undefined
Object.seal() 봉인
속성이 추가되거나 제거되는 것을 방지할 수 있으며, seal()은 속성 설명자의 수정도 방지할 수 있습니다.
Object.isSealed(myTesla); // false Object.seal(myTesla); Object.isSealed(myTesla); // true myTesla.color = 'blue'; console.log(myTesla.color); // undefined delete myTesla.batteryLife; // false console.log(myTesla.batteryLife); // 300 Object.defineProperty(myTesla, 'batteryLife'); // TypeError: Cannot redefine property: batteryLife
Object.freeze()는 동결됩니다
Object.seal()과 동일한 작업을 수행하며 속성을 쓸 수 없게 만듭니다.
Object.isFrozen(myTesla); // false Object.freeze(myTesla); Object.isFrozen(myTesla); // true myTesla.color = 'blue'; console.log(myTesla.color); // undefined delete myTesla.batteryLife; console.log(myTesla.batteryLife); // 300 Object.defineProperty(myTesla, 'batteryLife'); // TypeError: Cannot redefine property: batteryLife myTesla.batteryLife = 400; console.log(myTesla.batteryLife); // 300
참고: 불변 객체를 수정하려고 할 때 오류가 발생하도록 하려면 엄격 모드를 사용하세요.
추천 튜토리얼: js 입문 튜토리얼
위 내용은 js에서 불변 객체를 생성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!