際際滷

際際滷Share a Scribd company logo
def.js をひも盾く
゛オレ js 隈゛
     id:mooz
   @stillpedant
徭失B初
? 兆念
 C mooz (Hatena, GitHub, ´)
 C stillpedant (Twitter, Google)
? 挫きな冱Z
 C Mozilla 狼 JavaScript
? 恬ったもの                                      除唹
 C KeySnail (Emacs 井 Vimperator)
 C MiSPLi (Lisp I尖狼 in JavaScript)
 C その麿もろもろ

            しくは http://mooz.github.com/index-ja.html で
def.js
def.js
? http://github.com/tobeytailor/def.js
? Ruby に貌た芝隈でクラス協吶と@覚が佩える
サンプルコ`ド
サンプルコ`ド




          !?
h苧

? def (クラス兆) (協x);
  C クラス協x
  C def ("Person") ({ ´ });
? def (クラス兆) << 牌クラス(協吶);
  C Hクラスを峺協したクラス協x (@覚)
  C def (^Ninja") << Person({ ´ });
? this._super();
  C メソッド嶄から喘いる
  C Hクラスの揖兆メソッドを柵び竃し
サンプルコ`ド (壅)
書指のスライドの朕議
? def.js の咾鮴軆發垢

? def (クラス兆) (協x);
? def (クラス兆) << 牌クラス(協吶);
? this._super();
def (クラス兆) (協x);
def (クラス兆) (協x);
? def v方はv方 (deferred) を卦す
? def(^Person ̄) とすると
  C Person クラスが恬撹され (window.Person が
    協xされる)
  C 仝協x (props) を聞って Person クラスを
    するv方々が卦る
? つまり def(^Person ̄)({ ´ }); とすると
  C Person クラスが協xされ, { ´ } を聞ってその
    クラスがされる

     ☆ ^ ̄ : メソッドやプロパティを協xすること
def (クラス兆) << 牌クラス(協吶);
def (クラス兆) << 牌クラス(協吶);
? 念峰の宥り def v方はv方 deferred を卦す
? このv方には valueOf というプロパティがO協
  されている
? この valueOf がミソ
valueOf
? オブジェクトをプリミティブ、QするHに
  柵ばれる
? プリミティブ、豚棋される中にオブジェク
  トが竃くわしたとき徭啜弔忘瑤个譴
valueOf の




g佩すると,
1.   def(foo) called
2.   def(bar) called
3.   foo (valueOf)
4.   bar (valueOf)
def (クラス兆) << 牌クラス(協吶);
? def v方は valueOf のO協されたv方 deferred
  を卦す
? def (クラス兆) << 牌クラス(協吶); とすると栽
  で 3 指v方が柵ばれる


               def (クラス兆)




               Hクラス(協x)



              dererred.valueOf
               (def の卦り)
def(^Ninja ̄) << Person({ ´ });
 def(^Ninja ̄) << Person({ ´ }); としたとき´´

        def(^Ninja ̄)

    1. Ninja クラスを恬撹
    2. deferred.valueOf をO協
    3. deferred を卦す                      def.js のコンテキスト坪でグロ`バル

                       _super, _props をO協          deferred

       Person({ ´ });               def(^Ninja ̄) の卦した deferred に valueOf が
                                    O協されているので´´
1. deferred の _super に Person をO協
2. deferred の _props に { ´ } をO協

                                                deferred.valueOf

             1. deferred の _props を聞い Ninja クラスを
             2. deferred の _super を聞い Ninja のHクラスを Person にO協
                (Ninja に _superClass プロパティをO協する)
つまりは´´
? A() 處麻徨 B() のとき
  1. A()
  2. B()
  3. A の卦したオブジェクトの valueOf
? という桑で柵ばれてくれれば採でも措い
? << である駅勣來はoい
  C def(^Ninja ̄) >> Person({ ´ });
  C def(^Ninja ̄) + Person({ ´ });
this._super();
_super();




? v方の caller プロパティを聞って _super の柵び竃し圷
  メソッドを函誼.
? メソッドの _class プロパティによりクラスを函誼
? クラスの _super プロパティによりHクラスを函誼
? メソッドの _name プロパティによりメソッドの兆念を
  函誼し, Hクラスの隔つ揖兆メソッドを柵ぶ
_super() の聞う光プロパティ
? Klass.extend rに弖紗
  C メソッドの _name
  C メソッドの _class
? deferred.valueOf により弖紗
  C クラスの _super
? JavaScript 
  C arguments.callee
     ? そのv方徭附
? JavaScript 掲 (ほぼ畠てのブラウザがg廾)
  C caller プロパティ
     ? そのv方を柵んだv方
まとめ
まとめ
? def (クラス兆) (協x);
  C v方を卦すv方
? def (クラス兆) << 牌クラス(協吶);
  C valueOf
  C << である駅勣なし
? this._super();
  C arguments.callee.caller
處麻徨オ`バ`ロ`ド圀しい
Y創
? def.js
   C http://github.com/tobeytailor/def.js
? 晩云Zの盾hコメントをつけたコ`ド
   C https://gist.github.com/2ac889f4b0276ddf9586




               ご床ありがとうございました

More Related Content

defjs をひも盾く

  • 1. def.js をひも盾く ゛オレ js 隈゛ id:mooz @stillpedant
  • 2. 徭失B初 ? 兆念 C mooz (Hatena, GitHub, ´) C stillpedant (Twitter, Google) ? 挫きな冱Z C Mozilla 狼 JavaScript ? 恬ったもの 除唹 C KeySnail (Emacs 井 Vimperator) C MiSPLi (Lisp I尖狼 in JavaScript) C その麿もろもろ しくは http://mooz.github.com/index-ja.html で
  • 4. def.js ? http://github.com/tobeytailor/def.js ? Ruby に貌た芝隈でクラス協吶と@覚が佩える
  • 7. h苧 ? def (クラス兆) (協x); C クラス協x C def ("Person") ({ ´ }); ? def (クラス兆) << 牌クラス(協吶); C Hクラスを峺協したクラス協x (@覚) C def (^Ninja") << Person({ ´ }); ? this._super(); C メソッド嶄から喘いる C Hクラスの揖兆メソッドを柵び竃し
  • 9. 書指のスライドの朕議 ? def.js の咾鮴軆發垢 ? def (クラス兆) (協x); ? def (クラス兆) << 牌クラス(協吶); ? this._super();
  • 11. def (クラス兆) (協x); ? def v方はv方 (deferred) を卦す ? def(^Person ̄) とすると C Person クラスが恬撹され (window.Person が 協xされる) C 仝協x (props) を聞って Person クラスを するv方々が卦る ? つまり def(^Person ̄)({ ´ }); とすると C Person クラスが協xされ, { ´ } を聞ってその クラスがされる ☆ ^ ̄ : メソッドやプロパティを協xすること
  • 12. def (クラス兆) << 牌クラス(協吶);
  • 13. def (クラス兆) << 牌クラス(協吶); ? 念峰の宥り def v方はv方 deferred を卦す ? このv方には valueOf というプロパティがO協 されている ? この valueOf がミソ
  • 14. valueOf ? オブジェクトをプリミティブ、QするHに 柵ばれる ? プリミティブ、豚棋される中にオブジェク トが竃くわしたとき徭啜弔忘瑤个譴
  • 15. valueOf の g佩すると, 1. def(foo) called 2. def(bar) called 3. foo (valueOf) 4. bar (valueOf)
  • 16. def (クラス兆) << 牌クラス(協吶); ? def v方は valueOf のO協されたv方 deferred を卦す ? def (クラス兆) << 牌クラス(協吶); とすると栽 で 3 指v方が柵ばれる def (クラス兆) Hクラス(協x) dererred.valueOf (def の卦り)
  • 17. def(^Ninja ̄) << Person({ ´ }); def(^Ninja ̄) << Person({ ´ }); としたとき´´ def(^Ninja ̄) 1. Ninja クラスを恬撹 2. deferred.valueOf をO協 3. deferred を卦す def.js のコンテキスト坪でグロ`バル _super, _props をO協 deferred Person({ ´ }); def(^Ninja ̄) の卦した deferred に valueOf が O協されているので´´ 1. deferred の _super に Person をO協 2. deferred の _props に { ´ } をO協 deferred.valueOf 1. deferred の _props を聞い Ninja クラスを 2. deferred の _super を聞い Ninja のHクラスを Person にO協 (Ninja に _superClass プロパティをO協する)
  • 18. つまりは´´ ? A() 處麻徨 B() のとき 1. A() 2. B() 3. A の卦したオブジェクトの valueOf ? という桑で柵ばれてくれれば採でも措い ? << である駅勣來はoい C def(^Ninja ̄) >> Person({ ´ }); C def(^Ninja ̄) + Person({ ´ });
  • 20. _super(); ? v方の caller プロパティを聞って _super の柵び竃し圷 メソッドを函誼. ? メソッドの _class プロパティによりクラスを函誼 ? クラスの _super プロパティによりHクラスを函誼 ? メソッドの _name プロパティによりメソッドの兆念を 函誼し, Hクラスの隔つ揖兆メソッドを柵ぶ
  • 21. _super() の聞う光プロパティ ? Klass.extend rに弖紗 C メソッドの _name C メソッドの _class ? deferred.valueOf により弖紗 C クラスの _super ? JavaScript C arguments.callee ? そのv方徭附 ? JavaScript 掲 (ほぼ畠てのブラウザがg廾) C caller プロパティ ? そのv方を柵んだv方
  • 23. まとめ ? def (クラス兆) (協x); C v方を卦すv方 ? def (クラス兆) << 牌クラス(協吶); C valueOf C << である駅勣なし ? this._super(); C arguments.callee.caller
  • 25. Y創 ? def.js C http://github.com/tobeytailor/def.js ? 晩云Zの盾hコメントをつけたコ`ド C https://gist.github.com/2ac889f4b0276ddf9586 ご床ありがとうございました