デブサミ関西聞いてきたログその2

JavaScript 最新事情 — 開発者なら知っておきたい次世代 JavaScript のログ

前半

主に歴史。難しかったので割愛。

ECMAScript 5th での追加?機能

ECMAScript 5thに未対応のブラウザのために、5thが使えるように JavaScriptを拡張するライブラリがあるらしい。=>見つけられず。。
JSONのパースは極力 JSON.parse をつかえ!(evalは怖いし自分でサニタイズできる人はまれ)
IE.8でutf-8の文字列を Stringify するとばける => もってないのでよくわからい
DATEオブジェクトはブラウザ間の表示に差異がある
Arrayにメソッドが追加される

filter:
https://developer.mozilla.org/ja/docs/JavaScript/Reference/Global_Objects/Array/filter
callback関数渡してその戻り値がtrueのやつだけの配列にする。RubyのArray.select みたいなもの?

var over5 = function(item) { return item > 5 }
[3, 5, 8, 2].filter(over5) // => [ 8 ]


every:
https://developer.mozilla.org/ja/docs/JavaScript/Reference/Global_Objects/Array/every
渡されたcallback関数を配列のいっこいっこに対して呼び出しfalseが返るまで続ける。
全部 true なら true を返して 途中で false 返したら false返す。
every is ? みたいな使い方?

[6, 6, 8, 2].every(over5) // =>false
[6, 6, 8, 7].every(over5) // =>true


some:
https://developer.mozilla.org/ja/docs/JavaScript/Reference/Global_Objects/Array/some
いずれかが true になるまで続ける


reduce
https://developer.mozilla.org/ja/docs/JavaScript/Reference/Global_Objects/Array/reduce
イメージ的にはMapReduceのReduce?
[1, 2, 3, 4] を左から順に処理していって 11 とかにするみたい。使い道が。。ある?

var merge = function(prev, current) { prev + current };
[1,2,3,4,7].reduce(merge) //=> 17


reduceRight
https://developer.mozilla.org/ja/docs/JavaScript/Reference/Global_Objects/Array/reduceRight
そのまま reduce の逆(右から左)に処理していく


map
昔から知っているので割愛。

bind

呼び出す際の this を固定できる。
callback関数に Object のmethodをそのまま渡したかったのが解決できそう。ウレシイ
prototype.jsにはもともとあったらしいけど、ちょっと違う動きするみたい。
下のやつは node.js での実験

var EventEmitter = require('events').EventEmitter,
    util         = require('util');

var TestClass = function(value) {
  this.value = value;
};

TestClass.prototype.callback1 = function() {
  console.log(this.value);
};

var TestEmitter = function() {};
util.inherits(TestEmitter, EventEmitter);

var test = new TestClass("hanako saiko!");
var testEmitter = new TestEmitter();

testEmitter.on("fire!", test.callback1.bind(test));
testEmitter.emit("fire!"); // => hanako saiko!

引数固定とかも出来るみたいなんで、委譲の時とかに便利かも

use strict

ちょいちょいみかけるあれ。
perlにもあったような気がする

  • 未定義の変数への代入をエラー
  • 同じ名前のプロパティを計画 #=> ノートみすってイミフ
  • 8進数をエラー
  • 関数単位でも定義できる

ECMAScript 6th での追加

動く環境すくないけど、node なら使える。

Simple Set

nodeで使えなかったので未確認。
下みたいに動くらしい。

var set = new Set();
set.add("a");
set.has("a"); => true
Simple Map

JavaのMapみたいなもの?

Weak Maps

よくわからないけど、ガベージコレクタの為に何かしているらしい。

let

待望のブロックスコープが出来るようになるらしい。

Direct proxies

オブジェクトの操作にfookかませるようになるらしい。

残課題

  • フォクスケを間近でみる