[解決済み] Javascriptでオブジェクトを作成する - 複数のアプローチ、何か違いは?
2022-02-09 23:02:41
質問内容
javascriptでオブジェクトをインスタンス化するいくつかの異なる方法を見たことがありますが、様々なアプローチの利点/欠点と、他より1つを使用する理由を知りたいと思いました。
アプローチ1
var obj = {
prop: value,
.
.
.
}
アプローチ1は標準的なアプローチで、特に目新しいことはありません :)
アプローチ2
var obj = new function() {
var prop1 = value1;
var fn1 = function() {
};
.
.
.
this.prop2 = value2;
.
.
.
}();
関数のアプローチですが、アプローチ3と比較したかったのです。関数のアプローチは、主にカプセル化のために使われます(正しいですか?)
アプローチ3
var obj = (function() {
var prop1 = value1;
var fn1 = function() {
};
.
.
.
return {
prop2: value2,
.
.
.
}
})();
この方法では、その使用理由がよくわかりません。アプローチ2とどう違うのでしょうか?どちらもロジックをカプセル化するのに使えます。
パラメータを渡すことで、潜在的なコンフリクトに対処できるようにするためでしょうか?例:jqueryの
$
の構文がありますが、アプローチ2でも可能です...。
ありがとうございます。
編集する
アプローチ1と3は似ていると思いますが(どちらもオブジェクトを返すという点)、アプローチ3はクロージャも作成します。アプローチ2も同様です。
2と3はどちらもクロージャを作成しますが、両者の違いは何でしょうか。
どのように解決するのですか?
アプローチ#2および#3では
constructor
プロパティは異なります。
実際には、2番目のアプローチでは、匿名コンストラクタ関数を使用して複数のオブジェクトをインスタンス化できることを意味します。
x = new function() { alert(1) };
y = new x.constructor; // shows the message too
のトップアンサーです。 モジュールパターン vs. 無名コンストラクタのインスタンス には、Douglas Crockford氏の引用があり、なぜ#2よりも#3のアプローチの方が良いと思うかを説明しています。
関連
-
[解決済み】中央値の計算 - javascript
-
[解決済み] JavaScriptで複数行の文字列を作成する
-
[解決済み] 2つのJavaScriptオブジェクトのプロパティを動的にマージするにはどうすればよいですか?
-
[解決済み] JavaScriptのオブジェクトの配列からidでオブジェクトを検索する
-
[解決済み] オブジェクトをメンバーとして、プレーンなJavaScriptオブジェクトをループさせる方法
-
[解決済み] 新しい配列を作成せずに、既存のJavaScript配列を別の配列で拡張する方法
-
[解決済み] JavaScriptで複数の値を返す?
-
[解決済み] JavaScriptで複数ケースを扱うSwitch文
-
[解決済み] 2つのJavaScriptオブジェクトの等質性を判断する方法は?
-
[解決済み】オブジェクトからプロパティを削除する(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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングした
-
[解決済み】XMLHttpRequestモジュールが定義されていない/見つからない
-
[解決済み】コンソールがUnterminated JSX contentsエラーを投げる【終了しました
-
[解決済み】未定義のプロパティ 'bind' を読み込めない。React.js【重複あり
-
[解決済み】Jestが予期しないトークンに遭遇した
-
[解決済み】TypeError:res.jsonは関数ではありません。
-
[解決済み】TypeError: AngularJSで未定義のプロパティ'get'を読み取れない
-
[解決済み】'useState' が定義されていない no-undef React
-
[解決済み】Uncaught TypeError: 未定義のプロパティ 'msie' を読み取れない - jQuery tools
-
[解決済み】Vueが定義されていない