使用prototype.js 的时候应该特别注意的几个问题.


Posted in Javascript onApril 12, 2007

1. String.prototype.camelize    BUG
这个方法用来返回字符串的骆驼写法。用js 控制元素的 style的时候经常使用
比如 
var ss="font-color"  
ss=ss.camelize()    // fontColor
通常情况下 camelize 会工作得很好,但是有一个特列,那就是浮动定位  float
var ss="float"  
obj.style[ss.camelize()]="right" // 这将导致一个错误。
 显然,作者没有考虑 float这种特殊情况,正确的写法是: 
ie:   obj.style.styleFloat="right"
ff:   obj.style.cssFloat="right"
2. String.prototype.inspect   BUG
这里 inspect 方法是有Bug的, 作者用replace 方法的时候没有用正则,导致只能替换掉第一个匹配的字符。
正确的写法应该这样
  inspect: function() {
    return "'" + this.replace(/\\/g, '\\\\').replace(/"/g, '\\\"') + "'";
  }
3. Array.prototype.all   BUG
 这个方法检测是否数组中所有元素都能够让迭代函数为真。 如果全部能满足,则返回true,否则返回false
var f=function(x){return x%2==0}  //检查一个数是否是偶数
var arr=[2,4,6]
alert (arr.all(f)==true)   //显示 true
但是当  arr为空的时候,仍然返回 true
var arr=[]
alert(arr.all(f)==true)   //显示true
4.  Array.prototype.any  BUG
同 all方法,对空数组仍然返回true
5.Array.prototype.detect  也就是 find方法
这个不是 Bug ,但是不看原代码很容易让人误解,从而出错。
这个方法查找第一个能满足 迭代函数 的元素,最后返回元素的值
误解一:
   var f=function(x){return x%2==0}  //检测是否是偶数
   var arr=[1,3,5,7]    //故意定义一个全为奇数的数组。
   alert(arr.find(f)==false)   //false 
   //很多人误以为 find 函数在找不到满足条件的元素的时候会返回 false ,实际上,它返回的是 "undefined"
误解二:
   寻找数组中的数字元素
   var f=function(x){return !isNaN(x) && typeof(x)==="number"}
   var arr=[false,"go_rush",0,"阿舜"]
   if (arr.find(f)) alert("数组中含有数字元素")     //事实上 这个 alert永远不会执行。
因为 find方法返回的是第一个符合条件的值。  这里返回:0.  所以.....

6. 对hash 对象的处理需要格外小心的地方
var hash={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 相关文章推荐
Jquery跨域获得Json时invalid label错误的解决办法
Jan 11 Javascript
js原型继承的两种方法对比介绍
Mar 30 Javascript
JavaScript转换与解析JSON方法实例详解
Nov 24 Javascript
JS实现鼠标框选效果完整实例
Jun 20 Javascript
详解jQuery简单的表单应用
Dec 16 Javascript
JS使用tofixed与round处理数据四舍五入的区别
Oct 25 Javascript
JS 实现分页打印功能
May 16 Javascript
jQuery实现的简单获取索引功能示例
Jun 04 jQuery
bootstrap自定义样式之bootstrap实现侧边导航栏功能
Sep 10 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
Oct 26 jQuery
详解VUE前端按钮权限控制
Apr 26 Javascript
js实现tab栏切换效果
Aug 02 Javascript
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
Apr 12 #Javascript
ie 处理 gif动画 的onload 事件的一个 bug
Apr 12 #Javascript
无语,javascript居然支持中文(unicode)编程!
Apr 12 #Javascript
几个高效,简洁的字符处理函数
Apr 12 #Javascript
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
Apr 12 #Javascript
身份证号码前六位所代表的省,市,区, 以及地区编码下载
Apr 12 #Javascript
对google个性主页的拖拽效果的js的完整注释[转]
Apr 10 #Javascript
You might like
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
jQuery UI 应用不同Theme的办法
2010/09/12 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
jQuery多项选项卡的实现思路附样式及代码
2014/06/03 Javascript
Node.js中require的工作原理浅析
2014/06/24 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
JavaScript中property和attribute的区别详细介绍
2015/03/03 Javascript
Bootstrap按钮组件详解
2016/04/26 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
JavaScript 基础表单验证示例(纯Js实现)
2017/07/20 Javascript
JScript实现表格的简单操作
2017/08/15 Javascript
简单快速的实现js计算器功能
2017/08/17 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
深入浅析angular和vue还有jquery的区别
2018/08/13 jQuery
详解微信小程序网络请求接口封装实例
2019/05/02 Javascript
python写的ARP攻击代码实例
2014/06/04 Python
Python批量更改文件名的实现方法
2017/10/29 Python
python用BeautifulSoup库简单爬虫实例分析
2018/07/30 Python
python3.4 将16进制转成字符串的实例
2019/06/12 Python
python随机生成库faker库api实例详解
2019/11/28 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
美国在线家具网站:GDFStudio
2021/03/13 全球购物
建筑工程自我鉴定
2013/10/18 职场文书
服装电子商务创业计划书
2014/01/30 职场文书
商场开业庆典策划方案
2014/06/02 职场文书
学生会竞选演讲稿怎么写
2014/08/26 职场文书
质量主管工作职责
2014/09/26 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS