デブサミ関西聞いてきたログその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
[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かませるようになるらしい。
残課題
- フォクスケを間近でみる