/ #javascript #es2015 

{ prop1, prop2 }みたいなオブジェクト記法(shorthand property names)と文字列リテラルを使わないhello world

JSの波括弧に感動するシリーズ、第2回です。

なお今回の第2回目で最終回の予定です!!

第1回目はこちら(君はarrow functionの波括弧省略について知っているか)でした。

✎Shorthand property names

最近のオブジェクトは、このように書けるようです。

var prop1 = 'a';
var prop2 = 'b';
{ prop1, prop2 } //  {prop1: "a", prop2: "b"}

下記↓のページに説明が書いてあります。

オブジェクト初期化子

オブジェクトは new Object() 、 Object.create() 、 リテラル 表記法 ( initializer 表記法)を使用して初期化されます。オブジェクト初期化子はオブジェクトのプロパティ名と関連した値のゼロ以上のペアのリストです。中括弧( {} )で囲まれます。

Shorthand property namesて言うんですね、知らなかった。。

✎さて感想

わたしはRubyばかり書くマンなので、これはRubyでいうところのSetに似てるなと思いました。

似てないですかね。重複がないのを保証してくれるのが、Setに近いと思いました。

✎「文字列リテラルを使わずにhello worldを出力しなさい」というお題

この記法のメリットとしては、まあ実務上もいろいろあると思うんですが、

実務上じゃない範囲で考えますと、以下の問題を簡単に解くことができることに気づきました!

文字列リテラルを使わずにhello worldを出力しなさい

これは意外と難しくて、例えば、こんな解き方があるみたいです↓。

JavaScriptで文字列と数値リテラルを使わずにHello World - Qiita

何を今更、って感じですが書きたくなったので許してください。 元ネタ= https://codeiq.jp/ace/cielavenir/q431 僕が書いたらこんな風になりました。 var zero = +String.prototype, one = -~zero, two = one one, four = one two, hundred = ({} + zero).charCodeAt(two) + two; …

…難しいですね。

✎Shorthand property namesを使えば簡単さ。

こうすればいいことに気づいた!!

var ハローワールド;
console.log(Object.keys({ハローワールド})[0]); // ハローワールド




はい!!!!!!! 🌃🌃



とりあえず手元のChrome55では動作します。 🌠🌠🌠


Author

hoshinotsuyoshi

星野剛志(ほしのつよし) web application engineer. ruby/rails/docker