자바스크립트 객체 속성 설정 가능 여부 확인 (Checking Object Property Writability)

자바스크립트에서는 객체의 속성에 대해 설정 가능한지를 확인하는 방법을 제공합니다. 이는 객체의 속성을 변경할 수 있는지 여부를 확인하는 데 도움이 됩니다. 이번 블로그 포스트에서는 자바스크립트에서 객체 속성 설정 가능 여부를 확인하는 방법에 대해 알아보겠습니다.

속성 설정 가능 여부 확인하기

자바스크립트에서는 Object.getOwnPropertyDescriptor() 메서드를 사용하여 객체의 속성에 대한 정보를 가져올 수 있습니다. Object.getOwnPropertyDescriptor() 메서드는 객체와 속성명을 인자로 받아 속성에 대한 정보를 반환합니다.

const obj = { name: 'John', age: 30 };

const propertyDescriptor = Object.getOwnPropertyDescriptor(obj, 'name');
console.log(propertyDescriptor);

위의 코드에서 Object.getOwnPropertyDescriptor(obj, 'name')obj 객체의 name 속성에 대한 정보를 리턴합니다. 이를 통해 우리는 속성의 설정 가능 여부, 열거 가능 여부, 값의 writable 여부 등을 확인할 수 있습니다.

propertyDescriptor 객체의 프로퍼티 중 writable 값이 true이면 해당 속성은 변경 가능한 속성으로 설정되어 있습니다.

예제

const obj = { name: 'John', age: 30 };

const writable = Object.getOwnPropertyDescriptor(obj, 'name').writable;
console.log(`name 속성은 ${writable ? '설정 가능' : '설정 불가능'}합니다.`);

obj.name = 'Jane';
console.log(obj.name); // Jane

Object.defineProperty(obj, 'name', { writable: false });
obj.name = 'Tom'; // 에러 발생

console.log(obj.name); // Jane, 속성이 변경되지 않음

위의 예제에서 우리는 Object.getOwnPropertyDescriptor()를 사용하여 name 속성의 설정 가능 여부를 확인합니다. 결과에 따라 적절한 메시지를 출력합니다.

그 후, Object.defineProperty()를 사용하여 name 속성을 변경 불가능한 속성으로 설정합니다. 이후 속성의 값을 변경하려고 시도하면 에러가 발생합니다.

결론

자바스크립트에서 객체의 속성 설정 가능 여부를 확인하는 것은 중요한 작업입니다. Object.getOwnPropertyDescriptor() 메서드를 통해 속성에 대한 정보를 가져올 수 있으며, 이를 통해 속성의 변경 가능 여부를 확인할 수 있습니다. 이를 통해 객체를 적절히 관리하고 보호하는데 도움을 줄 수 있습니다.