使用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 相关文章推荐
javascript刷新父页面的各种方法汇总
Sep 03 Javascript
调试JavaScript中正则表达式中遇到的问题
Jan 27 Javascript
javascript实现表单提交后,提交按钮不可用的方法
Apr 18 Javascript
JavaScript每天定时更换皮肤样式的方法
Jul 01 Javascript
javascript 数组的正态分布排序的问题
Jul 31 Javascript
jQuery轻松实现无缝轮播效果
Mar 22 jQuery
基于JavaScript实现评论框展开和隐藏功能
Aug 25 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
Sep 28 Javascript
浅谈Angular单元测试总结
Mar 22 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
Feb 16 Javascript
前端性能优化建议
Sep 17 Javascript
解决vue项目中出现Invalid Host header的问题
Nov 17 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
php session应用实例 登录验证
2009/03/16 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
php生成短网址/短链接原理和用法实例分析
2020/05/29 PHP
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
javascript判断变量是否有值的方法
2015/04/20 Javascript
jQueryUI DatePicker 添加时分秒
2016/06/04 Javascript
Javascript的this用法
2017/01/16 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
python通过ssh-powershell监控windows的方法
2015/06/02 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
查找python项目依赖并生成requirements.txt的方法
2018/07/10 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
如何在Django项目中引入静态文件
2019/07/26 Python
基于keras 模型、结构、权重保存的实现
2020/01/24 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
Python 实现打印单词的菱形字符图案
2020/04/12 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
iHerb香港:维生素、补充剂和天然保健品
2017/08/01 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
园林技术个人的自我评价
2014/01/08 职场文书
优秀体育委员自荐书
2014/01/31 职场文书
国培计划培训感言
2014/03/11 职场文书
一年级评语大全
2014/04/23 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
网络编辑求职信
2014/04/30 职场文书
员工廉洁自律承诺书
2014/05/26 职场文书
校园标语大全
2014/06/19 职场文书
志愿者活动总结报告
2014/06/27 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
调解书格式范本
2015/05/20 职场文书
2016年猴年新春致辞
2015/08/01 职场文书