[解決済み] フリーズとシールの違い
2022-04-15 01:06:44
質問
JavaScriptのメソッドについて聞いたのですが
freeze
と
seal
これは、任意のオブジェクトをイミュータブルにするために使用することができます。
ここでは、その使い方の簡単な例を紹介します。
var o1 = {}, o2 = {};
Object.freeze(o2);
o1["a"] = "worked";
o2["a"] = "worked";
alert(o1["a"]); //prints "worked"
alert(o2["a"]); //prints "undefined"
とはどのような違いがあるのでしょうか?
freeze
と
seal
? パフォーマンスを向上させることができるのでしょうか?
どのように解決するのですか?
-
シールされたオブジェクトにプロパティを追加したり削除したりするのを防ぐことができます。
delete
は false を返します。 -
これは、既存のすべてのプロパティを
設定不可
データディスクリプタからアクセッサディスクリプタに変換することはできず、アクセッサディスクリプタの属性を変更することはできません。
writable
属性、およびvalue
属性は、もしwriteable
が真)。 -
を投げることができます。
TypeError
シールされたオブジェクトの値を変更しようとしたとき (最も一般的なのは ストリクトモード )
-
まさに何
Object.seal
が行う、プラス。 - を変更することを防ぎます。 任意の 既存のプロパティ
どちらも 'deep'/grandchildren オブジェクトには影響しません。例えば、もし
obj
が凍結されている場合。
obj.el
の値は再割り当てできませんが
obj.el
は、例えば以下のように変更することができます。
obj.el.id
を変更することができます。
パフォーマンス
ブラウザによっては、オブジェクトのシーリングやフリーズが列挙の速度に影響を与えることがあります。
- Firefox:列挙のパフォーマンスには影響なし
- IE:列挙のパフォーマンスへの影響はごくわずかです
- Chrome: シールされたオブジェクトやフリーズしたオブジェクトでは、列挙のパフォーマンスが速くなる
- Safari:封印または凍結されたオブジェクトの列挙が92%遅くなる(2014年現在)
テスト 封印されたオブジェクト , 凍結品 .
関連
-
vueにおけるv-forループオブジェクトのプロパティ
-
[解決済み】「X-Frame-Options」を「SAMEORIGIN」に設定したため、フレームでの表示を拒否された。
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] varキーワードの目的と、どのような場合に使用する(または省略する)べきですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] JavaScriptでカスタムオブジェクトを「正しく」作成する方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
親子コンポーネント通信を解決する3つのVueスロット
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
[解決済み】React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み】「X-Frame-Options」を「SAMEORIGIN」に設定したため、フレームでの表示を拒否された。
-
[解決済み】React Nativeアプリをターミナルから実行するとエラーが発生する(iOS)
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
[解決済み] TypeError: $.ajax(...) is not a function?
-
[解決済み】TypeScript-のAngular Frameworkエラー - "exportAsがngFormに設定されたディレクティブはありません"
-
[解決済み】 env: node: macにそのようなファイルやディレクトリはありません
-
jq は html ページとデータを動的に分割する。