javascript で get と 関数定義の違いが分からない


<https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/get>

[code]

    var obj = {
      get hoge() {
      }
    }
    
[/code]

とするのと、

[code]

    var obj = {
      hoge: function hoge() {
      }
    }
    
[/code]

とするのとでは、なにが違うのでしょうか？




定義したプロパティの使い方が異なります。

`get`で定義したプロパティは、参照すると`get`関数が自動的に呼び出されます。関数の返り値が参照結果として得られます。

[code]

    var obj = {
      get hoge() {
        return "abc";
      }
    }
    
    console.log(obj.hoge) // "abc"
    
[/code]

上の例のように、`obj.hoge`の値を得ようとすると`get`で定義した関数が自動的に呼び出されます。

* * *

一方、関数定義の場合は`obj.hoge`は関数が入っている普通のプロパティとなりますから、呼び出すには明示的に関数呼び出しをする必要があります。

[code]

    var obj = {
      hoge: function hoge() {
        return "abc";
      }
    }
    console.log(obj.hoge()); // "abc"
    
[/code]




定義したプロパティの使い方が異なります。

`get`で定義したプロパティは、参照すると`get`関数が自動的に呼び出されます。関数の返り値が参照結果として得られます。

[code]

    var obj = {
      get hoge() {
        return "abc";
      }
    }
    
    console.log(obj.hoge) // "abc"
    
[/code]

上の例のように、`obj.hoge`の値を得ようとすると`get`で定義した関数が自動的に呼び出されます。

* * *

一方、関数定義の場合は`obj.hoge`は関数が入っている普通のプロパティとなりますから、呼び出すには明示的に関数呼び出しをする必要があります。

[code]

    var obj = {
      hoge: function hoge() {
        return "abc";
      }
    }
    console.log(obj.hoge()); // "abc"
    
[/code]

