es5에서 Object.seal()을 사용하여 객체를 봉인한 후 객체 프로토타입의 속성을 수정할 수 있습니까?
漂亮男人2017-06-10 09:49:20
0
2
915
mdn 설명은 이렇습니다
번역에는 프로토타입에서 상속받은 속성에는 영향을 미치지 않는다고 하는데, __proto__ 속성의 값은 수정할 수 없다고 하더군요. 그러다가 직접 테스트해본 결과, 객체를 봉인한 후 프로토타입을 삭제하고 수정할 수 있다는 것을 발견했습니다. 이 문장의 표현을 이해하지 못했습니다. 정확합니까? . . 코드는 다음과 같습니다
일반적으로 객체는 확장 가능합니다(새 속성을 추가할 수 있음). 객체를 봉인하면 새 속성을 추가할 수 없으며 기존 속성을 모두 구성할 수 없게 됩니다. 속성을 구성할 수 없으면 삭제할 수 없게 되고 데이터 속성을 접근자 속성으로 재정의할 수 없으며 그 반대의 경우도 마찬가지입니다. 그러나 속성 값은 여전히 수정될 수 있습니다. 봉인된 객체의 속성을 삭제하거나 봉인된 객체의 속성을 데이터 속성에서 접근자 속성으로 변환하려는 시도는 자동으로 실패하거나 TypeError 예외가 발생합니다(엄격 모드).
프로토타입 체인에서 상속된 속성에는 영향을 주지 않습니다. 하지만 proto 속성 값은 수정할 수 없습니다.
일반적으로 객체는 확장 가능합니다(새 속성을 추가할 수 있음). 객체를 봉인하면 새 속성을 추가할 수 없으며 기존 속성을 모두 구성할 수 없게 됩니다. 속성을 구성할 수 없으면 삭제할 수 없게 되고 데이터 속성을 접근자 속성으로 재정의할 수 없으며 그 반대의 경우도 마찬가지입니다. 그러나 속성 값은 여전히 수정될 수 있습니다. 봉인된 객체의 속성을 삭제하거나 봉인된 객체의 속성을 데이터 속성에서 접근자 속성으로 변환하려는 시도는 자동으로 실패하거나 TypeError 예외가 발생합니다(엄격 모드).
프로토타입 체인에서 상속된 속성에는 영향을 주지 않습니다. 하지만 proto 속성 값은 수정할 수 없습니다.
정보 출처: https://developer.mozilla.org...
_proto_는 프로토타입 속성이 아닌 내부 사유 속성입니다
자세한 내용은 https://developer.mozilla.org...
를 참조하세요.