JavaScript의 객체 속성에는
1.writable이라는 세 가지 속성이 있습니다. 속성이 쓰기 가능한지 여부입니다.
2.열거 가능. for/in 문을 사용할 때 속성이 열거되는지 여부입니다.
3. 구성 가능. 이 속성의 속성을 수정할 수 있는지 여부와 속성을 삭제할 수 있는지 여부입니다.
ECMAScript 3 표준에서 위 세 가지 속성의 값은 true이며 변경할 수 없습니다. 새로 생성된 객체의 속성은 ECMAScript 5 표준에서 쓰기 가능, 열거 가능 및 삭제 가능하며 전달할 수 있습니다. 이러한 속성을 구성하고 수정하는 속성 설명 개체(속성 설명자)입니다.
속성의 값 정보도 속성의 속성으로 보면 객체의 속성에는 value, writable, enumerable, configurable의 4가지 속성이 있습니다.
getter 및 setter 메서드로 정의된 속성의 경우 쓰기 가능한 속성이 없기 때문에(속성 쓰기 가능 여부는 setter 메서드 존재 여부에 따라 다름) 이 속성에는 get, set, enumerable 및 configurable의 네 가지 속성도 있습니다. — get 및 set 속성의 값은 함수입니다.
객체 속성의 속성 가져오기
ECMAScript 5 표준에서는 Object.getOwnPropertyDescriptor()를 통해 객체 자체의 속성에 대한 속성 정보를 얻을 수 있습니다.
객체 속성의 속성을 설정
ECMAScript 5 표준에서는 Object.defineProperty()를 통해 객체 자체의 속성을 설정할 수 있습니다.
속성이 새로 생성되면 무시되는 속성 값은 모두 false이거나 정의되지 않습니다.
속성이 이미 존재하는 경우 무시된 모든 속성 값은 변경되지 않은 상태로 유지됩니다.
객체 속성의 속성을 일괄적으로 설정
여러 속성의 속성을 한 번에 설정해야 하는 경우 Object.defineProperties() 문을 사용할 수 있습니다. 이 문은 수정된 개체를 반환합니다.
속성 속성을 수정할 때 다음 규칙을 따라야 합니다. 규칙을 위반하면 JavaScript는 TypeError를 보고합니다:
객체가 확장 가능하지 않은 경우 기존 속성의 속성만 수정할 수 있고 새 속성을 추가할 수는 없습니다.
속성의 configurable 속성이 false인 경우 configurable 및 enumerable 속성의 값을 수정할 수 없습니다. writable 속성의 경우 true에서 false로 변경할 수 있지만 false에서 true로 변경할 수는 없습니다. . 속성이 getter 및 setter로 정의된 경우 getter 및 setter 메서드를 수정할 수 없습니다.
속성의 구성 가능 속성과 쓰기 가능 속성이 모두 false인 경우 속성 값을 변경할 수 없습니다. 속성의 쓰기 가능 속성이 false이지만 구성 가능 속성이 true인 경우 속성 값은 계속 수정될 수 있습니다.