Object.defineProperty
은 일반적으로 관련 메서드 Object.getOwnPropertyNames()
및 Object.getOwnPropertyDescriptor()
을 사용하여 한 개체에서 다른 개체로 속성 설명자를 복사하는 데 유용합니다. 프로토 타입에 물건을 병합 할 때.
앞에서 언급했듯이 getter 및 setter에 사용할 수 있습니다. 객체 리터럴 구문은 새 객체를 만들 때만 작동합니다. 기존 객체 (예 : 프로토 타입)에 새로운 getter/setter를 만들려면 Object.defineProperty()
을 사용하거나 위에서 설명한대로 설명자를 복사해야합니다.
[Enumerable에서]
서브 어레이와 같은 속성을 추가 위해 ... 루프에서 Object.keys()
통해 열거되는 것을 방지하는 데 유용
. 내장 된 프로토 타입, 특히
Object.prototype
에 폴리필을 추가 할 때 이것은 매우 중요합니다. 추가 된 메소드가 갑자기 루프에 나타나기를 원하지 않으므로
.hasOwnProperty()
검사를 수행하지 않는 다른 코드를 깨뜨릴 수 있습니다.
[[쓰기 가능]], [[구성]
사람들은 새로운 프로그래밍 스타일을 가능하게하는 의미에서 정말 "유용",하지만 그들은 읽고 만들 수있는 정신 기능입니다 - 우연히 덮어 쓰거나 제거 할 수없는 속성. 그래서 그래, 그것은 도서관을 위해 훌륭하다.
Object.freeze()
/.seal()
/.preventExtensions()
당신의의 프로토 타입을 보호하여 다소 안전한 자바 스크립트 평가 샌드 박스를 만들 충분한 개체를 보호 할 수있는 점에 더욱 보호의이 종류를 확장 내장 객체.
[mdn] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty)은 일반적으로 매우 통찰력이 있으며 사용 사례를 말합니다. –
주요 사용 사례는 속성을 정의하는 것입니다. –