Function.prototype.caller でプライベートメソッドを実装する
#JavaScript で private-method を使うには、ES6 で呼び出し元を判定する仕様を策定して ThrowStatement で実装すればいい気がしてきた。#Dart よりは #ECMAScript らしいと思う。
2011-11-04 17:51:58@think49 どうやら、Firefox で拡張されている Function.prototype.caller がそれらしい。ES6 仕様に取り込まれないかなあ…。http://t.co/fj8kiPIv
2011-11-04 18:48:51@think49 サンプルをhttp://t.co/5BJk6E7Vに投稿して初めてideoneが Function.prototype.caller に未対応なことに気がつく。独自拡張と知っていたはずなのに遅すぎた…。
2011-11-04 19:34:52@think49 Function.prototype.callerはFirefoxは勿論の事ですが、Opera,GoogleChromeも実行できますよ。IEは実行環境が無いのでわかりませんが。(全て現行stableバージョンでconsoleを使った時の話です。)
2011-11-04 19:49:05@think49 jsFiddle にサンプルを投稿してみた。/ プライベートメソッドのサンプル - jsFiddle http://t.co/as55TIYR #ECMAScript #JavaScript
2011-11-04 19:49:30@romer_t そうみたいですね。検証していて初めて気がつきました。 IE9 で実装されているなら足並みが揃うので ES6 での仕様策定も夢ではないかもしれませんねー。
2011-11-04 19:53:34@think49 ちなみに、IE8- は try 節以外で ThrowStatement を使用できないのでどちらにしろ無理なことはわかっていました。 うろ覚えですが、IE9 で解消されていたと思います。
2011-11-04 19:56:13読んでる。イベント周りの実装がややこしいことになってる気がする。後方互換性を残すのも大変だなあ…。/ jQuery 1.7の更新内容をまとめたよ。 | http://t.co/2AIWKybu http://t.co/xzlbgjpM #JavaScript
2011-11-04 21:23:46@think49 http://t.co/iRtkoxJa で不具合を指摘いただいて修正。凡ミスですみません。/ プライベートメソッドのサンプル - jsFiddle http://t.co/qfPXNQDS #ECMAScript #JavaScript
2011-11-04 21:59:26@Constellation やっぱり入らないですかねー。Strict Mode でなくてもいいので取り込まれたら嬉しいのですが…。
2011-11-04 22:02:40@think49 SES(Secure ECMAScript)でsecurity的にcallerないほうが良いとなった(結果strict modeで弾かれた)ので, 難しそうです…
2011-11-04 22:09:25