[解決済み] Javascriptの命名規則:value() vs getValue() [終了しました。]
2022-03-03 23:36:46
質問
シンプルなオブジェクトを想像してください。
function createObj(someValue) {
return {
someFunction: function () {
return someValue;
}
};
};
基本的にはそうなります。
var obj = createObj("something");
var result = obj.someFunction(); // "something"
今すぐ
someFunction
は、値を返す関数を指します。
javascriptで使われる
someFunction
関数を使うことができますか?
その関数が行うことを示す名前を付けるべきですか?それとも、その関数が返すオブジェクトの名前で名前を付けてもいいのでしょうか?
つまり、この名前は
value()
それとも
getValue()
? なぜ?
よろしくお願いします。
どのように解決するのですか?
JavaScriptには、正しい命名規則というものはありません。しかし、主に使用される3つの規則があります。
ゲッターとセッターを独立させる。
この方法では、Javaのようにゲッターとセッターの両方の関数を作成します。
var value;
this.getValue = function () {
return value;
}
this.setValue(val) {
value = val;
}
ゲッター/セッターメソッドの組み合わせ
この方法では、1つのメソッドで両方を行うことができます。ここでのマジックは、あなたがプロパティに新しい値を提供したかどうかをチェックすることです。
var _value;
this.value = function (val) {
if (arguments.length > 0) {
// Acts like a setter
_value = value;
return this;
}
return _value;
}
また、セッターを定義してクラスの実際のインスタンスを返すようにするのが一般的なので、こんなこともできます。
myObj
.setProp1("foo")
.setProp2("bar");
Object.defineProperty(オブジェクト定義プロパティ
こちらはあまり使われませんが、選択肢の一つでもあります。Objective-Cと似たようなものです。
@property
ステートメントを使用します。
var _value;
Object.defineProperty(this, "value", {
get: function() {
return _value;
},
set: function(val) {
_value = val;
}
});
そうすると、まるでパブリックプロパティのようにアクセスできるようになります。
console.log(myObj.value); // Calls the getter method
myObj.value = newValue; // Calls the setter method
関連
-
[解決済み】document.getElementByIDは関数ではありません。
-
[解決済み】BootstrapのCollapseが折りたたまれない
-
[解決済み】 \u003C とは何ですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】オブジェクトからプロパティを削除する(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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Failed to load resource: net::ERR_FILE_NOT_FOUND loading json.js
-
[解決済み】Javascript:getElementById対getElementsById(両方が別のページで動作する)。
-
[解決済み】BootstrapのCollapseが折りたたまれない
-
[解決済み】ある要素を別の要素に移動させるには?
-
[解決済み] テスト
-
[解決済み】XMLパースエラー:ルート要素が見つからない コンソールの場所 FF
-
[解決済み】Jestが予期しないトークンに遭遇した
-
[解決済み】Uncaught TypeError: 未定義のプロパティ 'msie' を読み取れない - jQuery tools
-
[解決済み】中央値の計算 - javascript
-
[解決済み】JavaScriptの命名規則について【終了しました