Hatena::ブログ(Diary)

s_ohiraの日記

2011-10-04

AOPなJSの準備始めたったー

JavaScriptのというよりもプログラミング言語におけるオブジェクトってのは
『参照の集合の参照』じゃないの?

と思ってるs_ohiraです。おはこんばんちわです。
硬い感じも試してみて苦手だったので、砕けた感じで書きたいと思いますです。

ヤター、dispatchできたよー - jsdo.it - share JavaScript, HTML5 and CSS

久々にjsdo.itで遊ばせてもらいましたー!楽しーですね!!
Perlはもちろん好きだけど、JavaScriptも好き!jsdo.it大好き!!
今回は以前からやりたいな!って思ってたネタです。

なぜか難しいと思ってたにもかかわらず、簡単に実装できましたったー
アレ?何だか簡単に出来るんじゃないの?って思ったのは某女史の質問でした。

var a = b = {};

たしか、こんな感じだったけど、おい!bってどこから出てきやがりました!!
ってのはおいといて、要はb.hogeを変更するとa.hogeまで変わっちゃう><
という内容だったわけですが、参照代入してんだから当たり前じゃないの…

で、以前からJSAOPぽいなことをやってみたいと思ってたワケです。
もう一つやりたいのはPerlのautoloadぽいことなんですが。。。
以前に試した内容が何だか、全く別の方向に進んでしまったため断念。。。
そのうちにうまいことやる方法が思い浮かぶはず。。。

今回、試したのはAOPはそれ自体がやりたいことだったりなんですけれども、
もっと面白いことを展開できるwktkな雛形だったりなのですね!
アレとかアレとか…モー夢が広がりんぐ!

やってる内容はJavaScriptのOOPsを多少くらいは知っていれば難しくないハズ。
というか、オイラに分かる内容なので難しくないと思います。
分かりづらいなーって思った際は下記の記事を参考にして頂ければと思います。

http://blog.livedoor.jp/dankogai/archives/51223538.html

http://d.hatena.ne.jp/jdg/20090706/1246840565#tb

http://d.hatena.ne.jp/perlcodesample/20101124/1278596435

http://d.hatena.ne.jp/gfx/20110226/1298705892

http://yanother.blogspot.com/2011/03/javascript.html

弾さん、taijuさん、PerlCodeSampleさん、gfxさん、YetAnotherな牧さん。。。
この時点でなんという強力な面々。。。
他言語を意識して出来たり、チュートリアルを考えられる方々ばかり!
すでにオイラなんかが付け入る隙とかミジンコですら入れないや。。。

で、何をしているかと言うとAppsでカプセル化を行ってます。
taijuさんのエントリを見れば何をしたくてやってるかはわかると思います。
その上で(今回は必要ないですが)thisを退避させます。
当然、退避先はthatですね!self使いたいあなた!!ちょっと待ってください。

http://d.hatena.ne.jp/uupaa/20100325/1269459024

uupaaさんのブログもそうですが、JavaScript:The Good Partsでも推奨。
ここは意味を悟った上で守ってもらいたいなマナーです。
thisの退避先はthatにする習慣を付けて貰えたら嬉しいですね!

さて、ようやっと本題ですが本当に難しいことなんて何もしてません。。。
無名関数引数に渡して前後にbefore/afterDispatchを実行させたくらいですね。
問題としては参照先の関数を変更された場合という懸念があります。

このあたりはtoStringをかけてゴニョゴニョしないとなのかなーとか何とか。
ボチボチと進めていきたいと思いますので思い出したように見て頂ければと思います。

とっても中身がないや(′・ω・`)

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/s_ohira/20111004/1317739939