JavaScript 更新記錄

  • 2013/8/11

使用 GET 請求

原... JavaScript在內部是使用Unicode處理字元,實作上採用UTF-8,所以傳入encodeURIComponent()的字串都是以UTF-8進行編碼

改為... JavaScript支援Unicode,內部實作上採用16位元編碼每個字串元素,大致上可視為UCS-2/UTF-16(這當中還有些歷史因素造成的細節,詳見 Effective JavaScript 一書條款七),不過,傳入encodeURIComponent()的字串最後會以UTF-8進行編碼


  • 2013/4/16
把自己的文件翻譯為 英文,並在過程中修正了一些原文件的錯誤。
  • 2012/12/17
http://openhome.cc/Gossip/JavaScript/ScopeChain.html

更正範例錯誤…XD
  • 2011/4/11
http://openhome.cc/Gossip/JavaScript/Operator.html
第三個例子,由於左運算元非空字串,會當作結果成立,所以再判斷右運算元為0,所以當作成立,整個&&運算此時確認成立,傳回右運算元。

http://openhome.cc/Gossip/JavaScript/This.html
透過p2呼叫時,toString()中的this則會參考至p2所參考的物件。


  • 2011/2/17
http://openhome.cc/Gossip/JavaScript/GET.html
多補充了一些編碼的處理。。XD

在JavaScript中,可以使用encodeURIComponent()為你作這些字元的編碼,編碼後的結果是遵守RFC 3986的規範,然而在RFC 3986之前,HTTP亦規範了GET與POST在發送請求參數時的編碼,大致上也是編碼為%hexhex,不過空白字元是編碼為 + 而不是RFC 3986的%20。如果直接透過瀏覽器按下發送按鈕來送出表單,則瀏覽器會自動處理編碼(依網頁上指定的編碼來處理),並將空白字元編碼為+,但透過非同步物件發送請求參數時,必須自行處理。

發送請求參數時,若使用encodeURIComponent()編碼後,要再將%20取代為+,以符合HTTP的規範。要注意的是,JavaScript在內部是使用Unicode處理字元,而傳入encodeURIComponent()的字串,都會被轉為UTF-8再進行編碼,若將encodeURIComponent()透過非同步物件發送出去,伺服端必須以UTF-8來處理接收到的字串。

如果你沒有透過encodeURIComponent()編碼,就直接透過非同步物件送出非ASCII字元,例如中文,那非同步物件會如何處理編碼,依不同的瀏覽器而有所不同,因此,建議還是使用encodeURIComponent()編碼後將%20取代為+再送出,避免不同瀏覽器的問題。


  • 2010/12/28
修正範例連結:
http://openhome.cc/Gossip/JavaScript/BuildAjaxLibrary.html

修正程式範例:
http://openhome.cc/Gossip/JavaScript/FunctionInstance.html

在一個匿名函式中,如果想取得本身實例,可以藉由argumentscallee來取得。例如:
js> var gcd = function(num1, num2) {
  >     return num2 != 0 ? arguments.callee(num2, num1 % num2) : num1;
  > };
js> gcd(20, 10);
10
js>



函式既然是物件,本身亦可擁有特性。例如函式有個length特性,代表其參數個數:
js> var gcd = function g(num1, num2) {
  >     return num2 != 0 ? g(num2, num1 % num2) : num1;
  > };
js> gcd.length;
2
js>