検索

ホームページ  >  に質問  >  本文

es5 で Object.seal() を使用してオブジェクトをシールした後、オブジェクト プロトタイプのプロパティを変更できますか?

mdn の説明はこれです

翻訳では、プロトタイプの継承された属性は影響を受けないが、__proto__ 属性の値は変更できないと書かれていました。その後、自分でテストしたところ、オブジェクトをシールした後にプロトタイプを削除および変更できることがわかりました。この文が正しいかどうかわかりませんでした。 。 。
コードは以下のように表示されます

リーリー


プロトタイプのprototypeTarget属性が削除されました

漂亮男人漂亮男人2753日前934

全員に返信(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
  • キャンセル返事