LoginSignup
0
1

More than 1 year has passed since last update.

Javascript オブジェクト内の短縮型メソッド定義

Last updated at Posted at 2021-10-19

経緯

Reactのコードを読んでいると以下のようなコードがあり、少し読み方に躓いたので備忘録として残します。

const mapDispatchToProps = dispatch => ({
  onMount(categoryId){
    dispatch(actions.fetchRanking(categoryId))
  },
  onUpdate(categoryId){
    dispatch(actions.fetchRanking(categoryId))
  }
})

書き換えると以下のようになります。

var obj = {
  onMount(categoryId){
    dispatch(actions.fetchRanking(categoryId))
  },
  onUpdate(categoryId){
    dispatch(actions.fetchRanking(categoryId))
  }
}

const mapDispatchToProps = function(dispatch){return obj}

言葉に表すと、「objを返す無名関数を定数mapDispatchToPropsに代入している」ということになります。

ここでobjをみるとomMount(){}onUpdate(){}が設定されていますが、
key:valueの形式じゃないの?と疑問に思いました。
(rubyのHashの形式だと思い、先入観が走りました。。)

terminalで対話形式でnodeを動かしてみると

> obj = { test(hoge){ return hoge } }
{ test: [Function: test] }

お、どうやら関数として定義できたみいです。
関数として呼び出してみました。

> obj.test
[Function: test]
> obj.test('aaaaa')
'aaaaa'

調べたところ、ECMAScript 2015で導入された短縮形のメソッド定義の構文でした。

var obj = {
  foo() {
    /* コード */
  },
  bar() {
    /* コード */
  }
};

jsは短縮形を把握していないと少し躓くなと思いました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1