web-dev-qa-db-ja.com

JavaScriptでゲッターとセッターを使用する理由

JavaScriptでゲッターとセッターがどのように機能するかを知っています。私が理解していないのは、通常の関数を使用して同じ結果を得ることができるときにそれらが必要な理由です。次のコードを検討してください。

var person = {
    firstName: 'Jimmy',
    lastName: 'Smith',
    get fullName() {
        return this.firstName + ' ' + this.lastName;
    }
}

console.log(person.fullName);    // Jimmy Smith

Getterを関数で簡単に置き換えることができます:

var person = {
    firstName: 'Jimmy',
    lastName: 'Smith',
    fullName: function() {
        return this.firstName + ' ' + this.lastName;
    }
}

console.log(person.fullName());    // Jimmy Smith

ゲッターとセッターを書く意味がわかりません。

35
NL500

ゲッターまたはセッターの使用と標準関数の使用の違いは、ゲッター/セッターが割り当て時に自動的に呼び出されることです。そのため、通常のプロパティのように見えますが、舞台裏では追加のロジック(またはチェック)を割り当ての直前または後に実行できます。

そのため、既に参照されている既存のオブジェクトプロパティの1つにこの種の追加ロジックを追加する場合、そのプロパティにアクセスできる残りのコードを変更せずに、ゲッター/セッタースタイルに変換できます。

19
Bulent Vural