-
ID:p2p30T さんの質問

急募です。
jsでvar obj = { hoge(){} };と、var obj = { hoge: function() {} };の違いを教えて下さい。よろしくお願い申し上げます。

みんなの回答 4 件

ID:T1/0MF さんの回答

同じです。左のほうが新しい書き方です。

ID:p2p30T

新しいということは、IEの古いのに対応してなかったりしますか?それともほとんどのブラウザで利用可能ですか?
後者の方が巷では記載されているようですが、前者が使われてない理由ってあるんでしょうか?

ID:p2p30T

あー間違った。前者が使われてない理由ってあるんでしょうか?

ID:p2p30T

いやいや、間違ってない、前者が使われてない理由ってあるんでしょうか〜?

ID:fMiTp4 さんの回答

obj.hoge(); ができるか、できないか。(後者はできる。前者はできない。)

ID:fMiTp4

ごめん。どっちもできたわ。

ID:p2p30T

出来ますよね〜。意外と盲点だと思うんですココ。

ID:p2p30T さんの回答

お客様の中に明確に答えられる勇者はいらっしゃいませんか?

ID:hAKmvh さんの回答

へえしらんかった。勉強になったありがとう。
var obj = { hoge(){} };は Shorthand method definition(日本語だとたぶん「略記メソッド定義」とかになると思う。詳しくは自分で調べろ)ECMAScript 2015にて導入。つまり略した表記方法だということ。ただし、互換性が気になる。それと、、
-
注意点としては、1)略記メソッド定義はnamed functionとなるが、hoge: function() {...の書き方だと無名関数扱いとなる。2)略記メソッド定義はコンストラクタとしては使えない。3)ジェネレーターメソッドのアステリスク(*)の表記位置が異なる。
-
この手のオブジェクトの使い方は、だいたい、オブジェクト内にメソッドとか変数を列記する形でしか使わないんだけど、個人的には見やすい方を使う。略記の方が好みだけど何かいい方法ないですかねえ。

Method definitions - JavaScript | MDN

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions
ID:4976K3

トピです。
なるほど、これですね!
ES2015で導入されたやつだったんですね。勉強になりましたmm

最終更新日:2017-01-28 (1,666 views)

関連するトピックス

ページ上部に戻る