狠狠撸
Submit Search
ES Harmony Proxy on Firefox 4
?
1 like
?
1,007 views
Masafumi Oyamada
Follow
ES Harmony Proxy on Firefox 4
Read less
Read more
1 of 27
Download now
Downloaded 15 times
More Related Content
ES Harmony Proxy on Firefox 4
1.
ES Harmony Proxy on Firefox 4 id:mooz @stillpedant
2.
About mooz (@stillpedant) Add-ons: KeySnail Emacs 版
Vimperator Clipple クリップボードマネージャ gpum Gmail の未読メール管理 See http://mooz.github.com/index-ja.html
3.
What’s the ES
Harmoney? ECMAScript 3 ECMAScript 4 ECMAScript 5 ECMAScript Harmoney 未来の JavaScript
4.
What’s the Proxy? ?
プロパティアクセス (代入, 取得) ? in 演算子の適用 ? delete 演算子の適用 ? new F(), F() などの操作がされた時, JavaScript 規定の動作ではなく “ユーザの設定した関数” が呼び出されるようなオブジェクト ES Harmoney (未来の JavaScript) の機能
5.
? Proxy の作成には
Proxy.create() を使用 Proxy.create() ハンドリング時に呼ばれる関数ハンドルしたい操作
6.
Example (1/3) var x
= obj.x; get が呼ばれ name に “x” が入る.
7.
Example (2/3) obj.y =
100; set が呼ばれ name に “y”, val に 100 が入る.
8.
Example (3/3) (“foo” in
obj) has が呼ばれ name に “foo” が入る.
9.
Proxy for? Q: 「こんなものが何の役に立つの?」 A:
「組み込みオブジェクトを模倣できるよ」 B: 「DSL! DSL!」 夢が広がる
10.
Proxy on Firefox
4 ? Firefox 4 では Proxy が使用可能
11.
Use cases ? 二つほど使用例をでっち上げることに成功 1.not 2.safe
12.
1.not
13.
? あるオブジェクト (親含む)
が, あるプロパティを持たない場合に実行したい 嬉しくない Why not?
14.
? obj を
Proxy でラップ ? obj に対する in 演算子の効果を反転 嬉しい! not(obj)
15.
not :: Before
& After Before: After:
16.
not (implementation) 時に呼ばれる関数 結果を反転して返す
17.
2. safe
18.
? 深いオブジェクトのプロパティをたどりたい – プロパティが途中で定義されていなかったりする –
null や undefined が出てきたりする ? 単純に obj.a.b.c と出来ない やってられない Why safe?
19.
嬉しい! safe(x) ? x を
Proxy でラップ ? . の代わりに $ を使ってプロパティをたどる ? 安全
20.
safe :: Before
& After Before: After:
21.
safe (implementation) このProxy オブジェクトの
get メソッドに という文字列が渡る で文字列を分割して 得られたプロパティを順にたどる (この中に面倒な処理を隠蔽)
22.
Proxy 便利
23.
でも、 Firefox 4 限定でしょ?
24.
宗教上の理由で Firefox 使えないし……
25.
ご安心下さい
26.
node-proxy https://github.com/brickysam26/node-proxy
27.
References [[harmony:proxies]] http://wiki.ecmascript.org/doku.php?id=harmony:proxies Proxy Tutorial http://soft.vub.ac.be/~tvcutsem/proxies/index.html Proxies are
Awesome! http://www.slideshare.net/BrendanEich/metaprog-5303821 ご清聴ありがとうございました
Download