Skip to main content

javascript 的比較運算子

javascript 的比較運算子

Javascript 這幾年猛烈發展,然而它的某些語法特性則讓人困惑;近期在 JSDC 2013 與 Web_Design 版看見關於比較 (>, <, >=, <=, == / !=) 規則的問題,決定整理備忘。章節編號均參照 ECMA-262。 Comparison Operators lref op rref, op in [>, <, >=, <=] Operator 兩邊的運算子評估後以 GetValue 取值比較;先 GetValue(lref) 後 GetValue(rref) 依照 op 決定如何將參數 (lref, rref) 對應為 (x, y) 並解釋 r <- x < y 運算式求得之 r (11.8.1-4, step 1-4) 11.8.5 規定了 […]

最近作的小玩具

最近作的小玩具

這一陣子做專案,稍微忙碌了一陣子;把最近順手做的小東西給貼上來,證明我還活著 XD 首先是在 FB 的某社團看到有人丟了怎麼用 html5/js/css 做浮水印的問題;雖說 html 早就能透過 position, z-index 在圖上疊字,好些人也這麼回應,但考慮浮水印一般是為了標示用戶下載的檔案而附加,就知道這樣的寫法不堪用。 html5 的 canvas 物件能夠以類似 windows gdi 的方式在上面繪圖(與文字),並以 dataurl 的方式將結果輸出給 img 標籤,讓使用者能夠點擊下載,顯然這才是正道。 隨手寫了 範例 放在 Amazon S3,不過原作顯然射後不理毫無疑問。果然發問問題品質,決定了回應與理解的素質。 然後昨晚看到有人繪製 AWS EC2 不同簽約環境的價格圖,一時手癢,也做了一份。原本打算用 gnuplot 製圖,但自己在那邊快取、invalidate 實在有點麻煩,最後是用 Google Visualization API 處理。 成品也是在 Amazon S3,歡迎亂玩。 補充: AWS 的費用資料有官方 json 格式可以拉!有空來把它再改造。 http://aws.amazon.com/ec2/pricing/pricing-reserved-instances.json http://aws.amazon.com/ec2/pricing/pricing-on-demand-instances.json Update 2014/03/27: 價格資訊的位置改了,格式也換成 jsonp

javascript 的 wrapper

javascript 的 wrapper

js 在面對基本型別 (primitive) type 如 number, boolean, string 的時候,如果試圖提取其屬性或呼叫方法,則會依照當時實值,產生對應的 Number, Boolean, String 臨時物件,對該物件進行運算,回傳結果並丟棄該物件。這個機制與 C# 的 boxing & unboxing 相當接近。也因為對象是臨時物件,因此對其屬性的操作都會被忽略,而不會作用在實體(基本型別變數)上。反之亦然,當對這些 wrapper 物件操作時,如果碰到需要基本型別的場景,也是會被自動轉換。 實測結果倒頗有意外性:雖然 wrapping 原理上視同建立臨時物件,但是目前的 Chrome / Firefox 恐怕都不這麼實作。針對字串進行操作,會發現如果是 primitive type string (如 “asdf”),運算速度會比 wrapper class (new String(“asdf”) 更快!

以 js 動態產生 html element

以 js 動態產生 html element

剛花了點時間弄的,結果後來覺得還是設成 display:none 比較快; 隨手貼上來備忘 ˇˇ