1. ホーム
  2. javascript

[解決済み] 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