2011/4/11
http://caterpillar.onlyfun.net/Gossip/JavaScript/Operator.html
第三個例子,由於左運算元非空字串,會當作結果成立,所以再判斷右運算元為0,所以當作
不
成立,整個&&運算此時確認
不
成立,傳回右運算元。
http://caterpillar.onlyfun.net/Gossip/JavaScript/This.html
透過
p2
呼叫時,toString()中的this則會參考至p2所參考的物件。
2011/2/17
http://caterpillar.onlyfun.net/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://caterpillar.onlyfun.net/Gossip/JavaScript/BuildAjaxLibrary.html
修正程式範例:
http://caterpillar.onlyfun.net/Gossip/JavaScript/FunctionInstance.html
在一個匿名函式中,如果想取得本身實例,可以藉由
arguments
的
callee
來取得。例如:
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>