52382


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

[code]

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

とするのと、

[code]

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

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


CC BY-SA 4.0
2019-01-28T14:04:53.990
52380
2019-01-28T16:28:02.757
12896
question
javascript
javascript で get と 関数定義の違いが分からない


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

`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]


CC BY-SA 4.0
2019-01-28T16:28:02.757
52382
2019-01-28T16:28:02.757
30079
52380
answer