[解決済み] JavaScriptでオブジェクトを作成する場合、どの方法が一番良いですか?オブジェクトのプロパティの前に `var` は必要ですか?
2022-04-20 02:36:24
質問
これまで、JavaScriptでオブジェクトを作成する3つの方法について見てきました。どの方法がオブジェクトを作成するのに最適なのか、またその理由は?
また、これらの例のすべてで、キーワード
var
がプロパティの前に使われていないのはなぜですか?なぜでしょうか?
var
プロパティは変数であると書かれているように、プロパティ名の前に?
2つ目と3つ目の方法では、オブジェクトの名前は大文字ですが、1つ目の方法では、オブジェクトの名前は小文字になっています。オブジェクトの名前には、どのようなケースを使用すればよいのでしょうか?
最初の方法
function person(fname, lname, age, eyecolor){
this.firstname = fname;
this.lastname = lname;
this.age = age;
this.eyecolor = eyecolor;
}
myFather = new person("John", "Doe", 50, "blue");
document.write(myFather.firstname + " is " + myFather.age + " years old.");
第2の方法
var Robot = {
metal: "Titanium",
killAllHumans: function(){
alert("Exterminate!");
}
};
Robot.killAllHumans();
第三の方法 - 配列構文を使用したJavaScriptオブジェクト。
var NewObject = {};
NewObject['property1'] = value;
NewObject['property2'] = value;
NewObject['method'] = function(){ /* function code here */ }
解決方法は?
はありません。 ベスト の方法は、あなたのユースケースに依存します。
-
使用方法
方法1
は、類似のオブジェクトを複数作成する場合です。あなたの例では
Person
(名前は大文字で始める必要があります)を コンストラクタ機能 . これは、以下のものと似ています。 クラス 他のOO言語では - 使用方法 方法2 のみ必要な場合は 1つのオブジェクト のようなものです(シングルトン)。もしこのオブジェクトを別のオブジェクトから継承させたい場合は、コンストラクタ関数を使用する必要があります。
- 使用方法 方法3 オブジェクトの他のプロパティに応じてプロパティを初期化したい場合、または動的なプロパティ名を持つ場合。
更新します。 要望のあった第3の方法の例です。
依存性のあるプロパティ。
として機能しません。
this
は
ではない
を参照してください。
book
. オブジェクトリテラル内の他のプロパティの値でプロパティを初期化する方法はありません。
var book = {
price: somePrice * discount,
pages: 500,
pricePerPage: this.price / this.pages
};
の代わりに、こうすることができます。
var book = {
price: somePrice * discount,
pages: 500
};
book.pricePerPage = book.price / book.pages;
// or book['pricePerPage'] = book.price / book.pages;
動的なプロパティ名です。
プロパティ名が何らかの変数に格納されているか、何らかの式で生成されている場合は、ブラケット記法を使用する必要があります。
var name = 'propertyName';
// the property will be `name`, not `propertyName`
var obj = {
name: 42
};
// same here
obj.name = 42;
// this works, it will set `propertyName`
obj[name] = 42;
関連
-
Vueでルートネスティングを実装する例
-
Vueのフィルタの説明
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScript でオブジェクトが特定のプロパティを持つかどうかを確認するにはどうすればよいですか?
-
[解決済み] jQueryでJavaScriptオブジェクトから選択する際に、オプションを追加する最も良い方法は何ですか?
-
[解決済み] JavaScriptはオブジェクトのプロパティの順序を保証するか?
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
jQueryのコピーオブジェクトの説明
-
JavaScriptのクロージャの説明
-
Vueにシンプルなメモ帳機能を実装
-
Vueの一般的な組み込みディレクティブの説明
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み】ERROR エラーです。スイッチのname属性が指定されていないフォームコントロールの値アクセッサがない
-
[解決済み】JavaScriptでインラインIF文の書き方は?
-
[解決済み】 env: node: macにそのようなファイルやディレクトリはありません
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。
-
HTML5 LocalStorage ローカルストレージとセッションストレージの使用法