>  Q&A  >  본문

es5에서 Object.seal()을 사용하여 객체를 봉인한 후 객체 프로토타입의 속성을 수정할 수 있습니까?

mdn 설명은 이렇습니다

번역에는 프로토타입에서 상속받은 속성에는 영향을 미치지 않는다고 하는데, __proto__ 속성의 값은 수정할 수 없다고 하더군요. 그러다가 직접 테스트해본 결과, 객체를 봉인한 후 프로토타입을 삭제하고 수정할 수 있다는 것을 발견했습니다. 이 문장의 표현을 이해하지 못했습니다. 정확합니까? . .
코드는 다음과 같습니다

으아악


프로토타입의 PrototototoTarget 속성이 삭제되었습니다

漂亮男人漂亮男人2688일 전892

모든 응답(2)나는 대답할 것이다

  • 怪我咯

    怪我咯2017-06-10 09:51:20

    일반적으로 객체는 확장 가능합니다(새 속성을 추가할 수 있음). 객체를 봉인하면 새 속성을 추가할 수 없으며 기존 속성을 모두 구성할 수 없게 됩니다. 속성을 구성할 수 없으면 삭제할 수 없게 되고 데이터 속성을 접근자 속성으로 재정의할 수 없으며 그 반대의 경우도 마찬가지입니다. 그러나 속성 값은 여전히 ​​수정될 수 있습니다. 봉인된 객체의 속성을 삭제하거나 봉인된 객체의 속성을 데이터 속성에서 접근자 속성으로 변환하려는 시도는 자동으로 실패하거나 TypeError 예외가 발생합니다(엄격 모드).

    프로토타입 체인에서 상속된 속성에는 영향을 주지 않습니다. 하지만 proto 속성 값은 수정할 수 없습니다.

    정보 출처: https://developer.mozilla.org...

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-06-10 09:51:20

    _proto_는 프로토타입 속성이 아닌 내부 사유 속성입니다

    자세한 내용은 https://developer.mozilla.org...

    를 참조하세요.

    회신하다
    0
  • 취소회신하다