タグ

ブックマーク / www.fladdict.net (3)

  • fladdict.net blog: JavaScriptでthisスコープをコントロールする

    ひげぽん OSとか作っちゃうかMona: 実践 prototype.js [1] ひげぽん OSとか作っちゃうかMona: 実践 prototype.js [2] ひげぽん氏のprototype.jsの記事を読んでいて、「イベントハンドラ内のthisスコープを変更するにはどうする?」みたいな内容があって、ちょうど同じ問題をやったばかりだったので書いてみるテスト。 クロージャを使うのですが、直接発行するのではなく、「スコープをずらすクロージャ」を返す関数を作ってやるとよいと思います。 FlashのDelegateクラスがちょうど内部的に、同じような処理をしてます。 ECMAScriptでは「関数=オブジェクト」なので、クロージャを擬似Commandパターンと解釈して、factoryで返してやると素敵。というかJavaScriptはネイティブにCommandパターンが実装されている、といっても

  • fladdict.net blog: JavaScript, ActionScriptにおける .this とは何なのか?

    人様にActionScript (あるいは JavaScript)を教える時に、絶対に鬼門となるthisスコープについてのまとめメモ。 ECMAスクリプトでは関数が他の変数に代入可能な為、関数のthisが文脈によって変動します。どうも、Javaとかやってる人にはそれがスゴイ気持ち悪いらしいのです。 thisとな何なのか? 端的に言うならば、thisは「その関数を、何のプロパティと解釈して呼び出したか?」によって決定します。 関数を直接呼び出す場合と、オブジェクトのプロパティに代入してから呼び出す場合を比較してみます。 function hoge(){ alert(this); //trace(this); flashの場合はコッチ } var myObj = new Object(); myObj.hoge = hoge; hoge(); myObj.hoge(); のように書いた場合、

    sky_2007
    sky_2007 2009/03/03
    thisについて
  • fladdict.net blog: イベント・ドリブンなJavaScriptのやり方

    Flashでに学ぶ非同期通信のノウハウのって感じのお話。JavaScriptでオブザーバパターンを用いて、イベントドリブンなコード(addEventListener等)をバリバリ書く方法です。 というかFlashで言うところの、mx.events.EventDispatcherクラスの自分なりの移植なわけですけど。 このEventDispatcherクラスを使うと、W3CのDOM3にそれなりに対応した、イベントモデルを自作のJavaScriptのオブジェクトに実装できます。これで素晴らしきイベントドリブンの世界が楽しめます。 function EventDispatcher(){} /** EventDispatcher.initialize( obj ) オブジェクトobjに、W3C DOM3互換のイベント通知機能を追加します。 これによりobjは、onLoad等のイベントを発行すること

  • 1