使用prototype.js 的时候应该特别注意的几个问题.
使用prototype.js 的时候应该特别注意的几个问题.
发布时间:2016-12-30 来源:查字典编辑
摘要:1.String.prototype.camelizeBUG这个方法用来返回字符串的骆驼写法。用js控制元素的style的时候经常使用比如v...

1.String.prototype.camelizeBUG

这个方法用来返回字符串的骆驼写法。用js控制元素的style的时候经常使用

比如

varss="font-color"

ss=ss.camelize()//fontColor

通常情况下camelize会工作得很好,但是有一个特列,那就是浮动定位float

varss="float"

obj.style[ss.camelize()]="right"//这将导致一个错误。

显然,作者没有考虑float这种特殊情况,正确的写法是:

ie:obj.style.styleFloat="right"

ff:obj.style.cssFloat="right"

2.String.prototype.inspectBUG

这里inspect方法是有Bug的,作者用replace方法的时候没有用正则,导致只能替换掉第一个匹配的字符。

正确的写法应该这样

inspect:function(){

return"'"+this.replace(//g,'').replace(/"/g,'"')+"'";

}

3.Array.prototype.allBUG

这个方法检测是否数组中所有元素都能够让迭代函数为真。如果全部能满足,则返回true,否则返回false

varf=function(x){returnx%2==0}//检查一个数是否是偶数

vararr=[2,4,6]

alert(arr.all(f)==true)//显示true

但是当arr为空的时候,仍然返回true

vararr=[]

alert(arr.all(f)==true)//显示true

4.Array.prototype.anyBUG

同all方法,对空数组仍然返回true

5.Array.prototype.detect也就是find方法

这个不是Bug,但是不看原代码很容易让人误解,从而出错。

这个方法查找第一个能满足迭代函数的元素,最后返回元素的值

误解一:

varf=function(x){returnx%2==0}//检测是否是偶数

vararr=[1,3,5,7]//故意定义一个全为奇数的数组。

alert(arr.find(f)==false)//false

//很多人误以为find函数在找不到满足条件的元素的时候会返回false,实际上,它返回的是"undefined"

误解二:

寻找数组中的数字元素

varf=function(x){return!isNaN(x)&&typeof(x)==="number"}

vararr=[false,"go_rush",0,"阿舜"]

if(arr.find(f))alert("数组中含有数字元素")//事实上这个alert永远不会执行。

因为find方法返回的是第一个符合条件的值。这里返回:0.所以.....

6.对hash对象的处理需要格外小心的地方

varhash={member:1,test:2,ids:3}

alert(hash.member)

alert($H(hash).inspect())

alert($H(hash).toQueryString())

//hash.member实际是存在的但是.inspect()和.toQueryString()却当它不存在

同样下面这些属性也会和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教程学习
热门Javascript教程学习
编程开发子分类