|
這個(gè)方法用來返回字符串的駱駝寫法。用js 控制元素的 style的時(shí)候經(jīng)常使用
比如
var ss="font-color"
ss=ss.camelize() // fontColor
通常情況下 camelize 會(huì)工作得很好,但是有一個(gè)特列,那就是浮動(dòng)定位 float
var ss="float"
obj.style[ss.camelize()]="right" // 這將導(dǎo)致一個(gè)錯(cuò)誤。
顯然,作者沒有考慮 float這種特殊情況,正確的寫法是:
ie: obj.style.styleFloat="right"
ff: obj.style.cssFloat="right"
2. String.prototype.inspect BUG
這里 inspect 方法是有Bug的, 作者用replace 方法的時(shí)候沒有用正則,導(dǎo)致只能替換掉第一個(gè)匹配的字符。
正確的寫法應(yīng)該這樣
inspect: function() {
return "'" + this.replace(////g, '////').replace(/"/g, '///"') + "'";
}
3. Array.prototype.all BUG
這個(gè)方法檢測是否數(shù)組中所有元素都能夠讓迭代函數(shù)為真。 如果全部能滿足,則返回true,否則返回false
var f=function(x){return x%2==0} //檢查一個(gè)數(shù)是否是偶數(shù)
var arr=[2,4,6]
alert (arr.all(f)==true) //顯示 true
但是當(dāng) arr為空的時(shí)候,仍然返回 true
var arr=[]
alert(arr.all(f)==true) //顯示true
4. Array.prototype.any BUG
同 all方法,對空數(shù)組仍然返回true
5.Array.prototype.detect 也就是 find方法
這個(gè)不是 Bug ,但是不看原代碼很容易讓人誤解,從而出錯(cuò)。
這個(gè)方法查找第一個(gè)能滿足 迭代函數(shù) 的元素,最后返回元素的值
誤解一:
var f=function(x){return x%2==0} //檢測是否是偶數(shù)
var arr=[1,3,5,7] //故意定義一個(gè)全為奇數(shù)的數(shù)組。
alert(arr.find(f)==false) //false
//很多人誤以為 find 函數(shù)在找不到滿足條件的元素的時(shí)候會(huì)返回 false ,實(shí)際上,它返回的是 "undefined"
誤解二:
尋找數(shù)組中的數(shù)字元素
var f=function(x){return !isNaN(x) && typeof(x)==="number"}
var arr=[false,"go_rush",0,"阿舜"]
if (arr.find(f)) alert("數(shù)組中含有數(shù)字元素") //事實(shí)上 這個(gè) alert永遠(yuǎn)不會(huì)執(zhí)行。
因?yàn)?nbsp;find方法返回的是第一個(gè)符合條件的值。 這里返回:0. 所以.....
6. 對hash 對象的處理需要格外小心的地方
var hash={member:1,test:2,ids:3}
alert(hash.member)
alert($H(hash).inspect())
alert($H(hash).toQueryString())
//hash.member實(shí)際是存在的 但是.inspect() 和 .toQueryString()卻當(dāng)它不存在
同樣下面這些屬性也會(huì)和 prototype.js 相沖突。
each, all, any, collect, detect, findAll, grep, include, inject, invoke, max, min,
partition, pluck, reject, sortBy, toArray, zip, inspect, map, find, select, member, entries
JavaScript技術(shù):使用prototype.js 的時(shí)候應(yīng)該特別注意的幾個(gè)問題.,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。