[解決済み] オブジェクトスプレッド vs. Object.assign
2022-03-19 13:36:36
質問
例えば
options
変数にデフォルト値を設定したい。
この2つの選択肢の利点と欠点は何ですか?
オブジェクトスプレッドの使用
options = {...optionsDefault, ...options};
またはObject.assignを使用する
options = Object.assign({}, optionsDefault, options);
これは コミット という疑問を抱いた。
解決方法は?
これは必ずしも網羅的なものではありません。
スプレッド構文
options = {...optionsDefault, ...options};
メリット
-
ネイティブサポートがない環境で実行するコードを作成する場合、(ポリフィルを使用するのではなく)この構文をコンパイルするだけでよい場合があります。(例えばBabelで)。
-
冗長性を少なくする。
デメリット
-
この回答が書かれた当初は、これは 提案 標準化されていません。プロポーザルを使うときは、今それを使ってコードを書いても標準化されなかったり、標準化に向けて変更された場合どうするかを考えてください。これはその後、ES2018で標準化されました。
-
動的ではなく、リテラル。
Object.assign()
options = Object.assign({}, optionsDefault, options);
メリット
-
標準化されている。
-
ダイナミックに。例
var sources = [{a: "A"}, {b: "B"}, {c: "C"}]; options = Object.assign.apply(Object, [{}].concat(sources)); // or options = Object.assign({}, ...sources);
デメリット
- より冗長になる。
- ネイティブサポートがない環境で実行するコードを作成する場合、ポリフィルが必要です。
<ブロッククオート
と疑問に思ったコミットです。
ご質問の内容とは直接関係ないのですが。そのコードでは
Object.assign()
を使用し、ユーザーコード(
object-assign
を使用することで、同じことができます。彼らはそのコードをBabelでコンパイルしているようです(そしてそれをWebpackにバンドルしています)。私が話していたのは、コンパイルするだけで済む構文ということです。彼らはどうやらその方が
object-assign
をビルドに組み込む依存関係として使用します。
関連
-
Vueはランニングライト形式のテキストを水平方向にスクロールする機能を実装している
-
Vueのフォームイベントのデータバインディングの説明
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptのオブジェクトにキーが存在するかどうかをチェックする?
-
[解決済み] JavaScriptのオブジェクトをループスルーまたは列挙するにはどうすればよいですか?
-
[解決済み] オブジェクトが配列であるかどうかを確認するにはどうすればよいですか?[重複]。
-
[解決済み】未定義のオブジェクトプロパティを検出する
-
[解決済み】JavaScriptのオブジェクトの長さ
-
[解決済み】ES6でオブジェクトのプロパティをキーでフィルタリングする
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
HTML+CSS+JavaScriptで簡単な三目並べゲームを作成する。
-
vue for 登録ページ効果 vue for sms 認証コードログイン
-
Vueのフォームイベントのデータバインディングの説明
-
[解決済み】リソースの読み込みに失敗した:Bind関数でサーバーが500(Internal Server Error)のステータスで応答した【非公開
-
[解決済み】"フォームが接続されていないため、フォームの送信がキャンセルされました "というエラーの取得について
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。
-
JavaScriptのStringに関する共通メソッド
-
jq は html ページとデータを動的に分割する。
-
[解決済み] JavaScriptのオブジェクトにキーと値のペアを追加するにはどうすればよいですか?
-
[解決済み] オブジェクトのマージ(連想配列)【重複