Feeds:
文章
留言

Archive for 六月 1st, 2006

Prototype Framework 心得(1)

今天打開這個很著名的 Javascript Framework 來研究,發現下面這一段相當有用的程式碼
Object.extend = function(destination, source) {
  for (property in source) {
    destination[property] = source[property];
  }
  return destination;
}
不要小看這麼小一砣的程式,他的用途可是超乎想像的好用,這個功能主要是用來動態擴展一個物件,
也可以想成實作某個介面,也許這樣說很難理解,用個範例來說好了,假設我要 Array 實作一個 IExtention 介面
, IExtension 介面定義如下
 var IExtension = {
  count: function(){
   return this.length;
  },
  add: function(){
   this.push( arguments );
  }
 };
 
接著如果要讓 Array 原生物件支援 IExtension,可以使用 Object.extend 如下
 Object.extend( Array.prototype, IExtension );
接著你可以使用下面的程式片斷,由程式片斷可知道 Array 目前支援 IExtension 的 count 和 add
 var a1 = [1, 2, 3];
 alert( a1.count() ); // 3
 a1.add( 4 );
 alert( a1.count() ); // 4
如果你了解 Javascript 的 prototype 你可能覺得這並沒有什麼了不起,可能你會想用
Array.prototype.count = function () {…}
Arrat.prototype.add = function() {…}
可以達到上面同樣的效果,可是如果你要實作的介面很大,而且同時實作多個界面或介面要重複使用,那上面那段程式碼就可以簡化許多程式


範例:將上面 IExtension 的 add 分離到 IExtension2,讓 Array 同時實作 IExtension 和 IExtension2
 var IExtension = {
  count: function(){
   return this.length;
  }
 };
 
 var IExtension2 = {
  add: function(){
   this.push( arguments );
  }
 };
 Object.extend( Array.prototype, IExtension );
 Object.extend( Array.prototype, IExtension2 );
 var a1 = [1, 2, 3];
 alert( a1.count() ); // 3
 a1.add( 4 );
 alert( a1.count() ); // 4

範例:String 和 Array 皆實作 IExtension
 var IExtension = {
  count: function(){
   return this.length;
  }
 };
 Object.extend( Array.prototype, IExtension );
 Object.extend( String.prototype, IExtension );
 var a1 = [1, 2, 3];
 alert( a1.count() ); // 3
 var s1 = "Arick";
 alert( s1.count() ); // 5
 
透過上面的說明,你對於上面那一砣程式碼的震撼是否和我一樣呢 ^^

Read Full Post »

Read Full Post »

Ruby 是什麼?

久聞其名,但不知為何物,所以今天在網路上收集資料作個小整理
1. 屬於一種動態語言
2. 用於 Web 開發
3. Ruby on Rails 的 Rails 是一個 Framework
4. 應用優勢
    *  使用REST架構和(或)AJAX設計的Web 2.0應用
    * 交付時間非常緊迫的中小型Web應用
    * 低成本的原型和試驗系統
    * 目標高度明確的內部應用和工具程序
    * 「硬」事務系統的所謂 「軟」 層應用接口
    * 複雜企業應用的構建系統
5. 語法精簡靈活(跟我駕馭不了的 Python 相比)
6. 直譯式語言
7. 有支援 .Net 的 Ruby Compiler
8. 支援物件導向

Read Full Post »