Prototype 1.6.0 RC

でましたね。Prototype 1.6.0 release candidate

WEB界隈から離れてしばらくたちますが、またいつWEB界隈に戻るかわからないので一応追ってます。

1.6ではついにClass周りに手が入りました。Prototype.jsといえばシンプルすぎるClass周りとプロパティをコピーするというなんちゃって継承がウリ(?)だったわけですが、1.6からは違います。もうオレオレクラス定義ライブラリをわざわざ使わなくても大丈夫。

公式にも例がありますが、こんな感じでちゃんと継承できるようになりました。

javascript code
  1. var Animal = Class.create({
  2.   initialize: function(name) {
  3.     this.name = name;
  4.   },
  5.   eat: function() {
  6.     return this.say("Yum!");
  7.   },
  8.   say: function(message) {
  9.     return this.name + ": " + message;
  10.   }
  11. });
  12.  
  13. var Eatable = {
  14.   eaten : function() {
  15.     return this.say("help me!!!");
  16.   }
  17. }
  18.  
  19. var Mouse = Class.create(Animal, {
  20. });
  21. //syntax sugar for Object.extend
  22. Class.mixin(Mouse.prototype, Eatable);
  23.  
  24. // subclass that augments a method
  25. var Cat = Class.create(Animal, {
  26.   eat: function($super, food) {
  27.     if (food instanceof Mouse) return [food.eaten(),$super()].join("\n");
  28.     else return this.say("Yuk! I only eat mice.");
  29.   }
  30. });
  31.  
  32. var a = new Cat("Tama");
  33. alert(a.eat(new Mouse("Nezumy mouse")));
  34.  

単にプロトタイプチェーンをつなげるだけではなくて、オーバライドされたメソッドの引数名を取得して(toStringしてgrepですね)、$superだった場合、自動的に親クラスのメソッドを$superとして渡してくれます。地味に便利。

あとはsyntax sugarとしてClass.mixinがあります。まぁObject.extendなんですが、こっちの方がわかりやすいですよね。

そのほかもいっぱい機能が追加れさてれてますね。個人的にはdocument.observe("contentloaded", function() { ... })て感じでサポートされたDOM完了時点でのイベントと、

javascript code
  1. $("container").observe("titleChanged", function(event) {
  2.   this.highlight({ duration: 0.5 });
  3. });
  4.  
  5. $("title").fire("titleChanged");
  6.  

って感じのカスタムイベントが必ず使いそうな機能かな。


資格の勉強とかもそろそろしなきゃなー、と思いつつ、Scalaでパーサコンビネータライブラリがついたので、Schemeの処理系でも実装したいなあ、と思い始めてる今日この頃。

Related posts:

07.27.08/12am

No comments yet

trackback uri
  • ajax-loading
  • ajax-loading
  • ajax-loading

Leave a Comment

You can use these tags: <code>, <i>, <em>, <strong>, <a>

About

Author:yuin(http://inforno.net/)

文学部文化学科卒という生粋の文系趣味プログラマ。

主にRuby、Javascript、PHP、JAVA,Python,C,Scala,Schemeなどを使っています。今はPythonな感じかもしれない。今後作曲活動なども復活するかもしれない。

Pages