>웹 프론트엔드 >JS 튜토리얼 >js에서 불변 객체를 생성하는 방법

js에서 불변 객체를 생성하는 방법

王林
王林앞으로
2020-05-19 09:16:032824검색

js에서 불변 객체를 생성하는 방법

객체의 불변성은 객체가 생성된 후 어떤 방식으로든 변경되는 것을 원하지 않는다는 의미입니다(읽기 전용 유형으로 설정).

자동차 개체를 정의하고 프로젝트 전반에 걸쳐 해당 속성을 사용하여 작업을 수행해야 한다고 가정해 보겠습니다. 우리는 어떤 데이터도 잘못 수정되는 것을 허용할 수 없습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제