prototype.jsとJSANの親密な関係?
最近、はてなのnaoyaさんのblogで知ったprototype.jsを試しています。
prototype.jsはJavaScriptでオブジェクト指向なコーディングをしたい場合におすすめです。
以下のコードは2次元の点を表現するクラスの例です。
これまでにJavaやPHPでOOなコードを書いたことのある方なら、やろうとしていることは容易に想像できると思います。
prototype.jsを使えば、こんなに綺麗にコードが書けるのですね。
<script src="prototype.js" type="text/javascript"></script> <script> var Point = Class.create(); Point.prototype = { initialize : function(x, y) { this.x = x; this.y = y; }, distance : function(p) { return Math.sqrt( (this.x - p.x) * (this.x - p.x) + (this.y - p.y) * (this.y - p.y) ); }, toString : function() { return "Point(" + this.x + ", " + this.y + ")"; } } var p1 = new Point(0, 10); var p2 = new Point(10, 0); alert("p1.distance(p2) = " + p1.distance(p2)); </script>
そうそう、naoyaさんのはてなブックマークで知ったのですが、Using prototype.js v1.3.にかなり細かくprototype.jsの解説が書かれています。
それはさておき、prototype.jsを眺めていたら、どこかで見たことのあるコードに出会いました。よく見ると、JSANに登録されているTryと全く同じコードでした。
TryのAuthorの項目を見ると,
Rob Kinyon (rob.kinyon@iinteractive.com)
Originally written by Sam Stephenson (sam@conio.net)
と書かれています。
一方、prototype.jsのヘッダーには以下のように書かれています。
/* Prototype JavaScript framework, version 1.4.0_pre2
* (c) 2005 Sam Stephenson
どうなってるんだろう?と思い、Rob Kinyonさんがリリースしているモジュールを表示してみました。
そうすると、興味深いモジュールが見つかりました。
そう、「Prototype」です。
PrototypeのDESCRIPTIONを見ると以下のように書かれていました。
This is a faithful reconstruction of Sam Stephenson's prototype.js - please see that documentation for more detail. The main difference is that it now uses JSAN distributions vs. being a (completely) monolithic entity.
要するに、JSAN版のprototypeということですね。
-
- -
CPANのJavascript版であるJSANが盛り上がっていけば良いですねぇ。
JSANが活発になれば、かなり面白いことになりそうな予感がします。