2010年2月27日 星期六

JavaScript is not only toy


現在在做Web的時候幾乎脫離不了使用JavaScript,但是超有彈性的JavaScript卻常常帶給人誤解,以至於把它當成一個二三流的programming language,舉幾個簡單的例子:

如果網頁中有多媒體的物件,需要有播放和停止撥放兩個功能,常看到的寫法是:
function MediaPlay() {
    ...
}

function MediaStop() {
    ...
}

其實JavaScript是個OO的language,可以寫得更OO,達到更多的reuse的(這是另一個話題了),我們可以改得更OO一點:
function Media() {
 ...
}

Media.prototype = {
   play: function() {
      ...
   },
   stop: function() {
      ...
   }
};

不同於C++/Java的class-based繼承,JavaScript使用的是prototype-based的繼承,相信大家如果多拜讀一些大師的著作,相信你會發現JavaScript會是一個讓人誤解很深,而且被低估的語言,不過隨著Web應用的多元化,JavaScript會漸漸顯露頭角的。
在學習JavaScript的過程中,還有讓人替他抱屈的地方,就是memory leak的問題了,在寫C大家都知道要free,可是在JavaScript中卻很少人在做歸還memory的事情,望著browser的memory usage逐步上升,然後等他沒有回應,於似乎就是關閉browser,然後怪罪browser或OS不穩,卻很少人去怪罪JavaScript的developer,不過如果是身為一個JavaScript developer,不論是否有人幫你背黑鍋(IE很常背阿,哈哈哈哈),都應該要好好了解JavaScript再來coding,不要低估JavaScript了。