使用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 对象的解释
Nov 24 Javascript
IE6中使用position导致页面变形的解决方案(js代码)
Jan 09 Javascript
HTML中的setCapture和releaseCapture使用介绍
Mar 21 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
Apr 03 Javascript
jQuery固定元素插件scrolltofixed使用指南
Apr 21 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
Jun 18 Javascript
详解Bootstrap glyphicons字体图标
Jan 04 Javascript
JavaScript获取客户端IP的方法(新方法)
Mar 11 Javascript
jQuery实现调整表格单列顺序完整实例
Jun 20 Javascript
将JSON字符串转换成Map对象的方法
Nov 30 Javascript
JavaScript中click和onclick本质区别与用法分析
Jun 07 Javascript
vue选项卡切换的实现案例
Apr 11 Vue.js
讲两件事: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实现抓取Google IP并自动修改hosts文件
2015/02/12 PHP
thinkPHP中多维数组的遍历方法
2016/01/09 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
用Laravel轻松处理千万级数据的方法实现
2020/12/25 PHP
改进:论坛UBB代码自动插入方式
2006/12/22 Javascript
javascript对象的使用和属性操作示例详解
2014/03/02 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
AngularJS中$interval的用法详解
2016/02/02 Javascript
剖析Node.js异步编程中的回调与代码设计模式
2016/02/16 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
2017/01/12 Javascript
Vue2.0+ElementUI实现表格翻页的实例
2017/10/23 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
[01:06]DOTA2隆重推出2016冬季勇士令状 内含上海特级锦标赛互动指南
2016/02/17 DOTA
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
python设定并获取socket超时时间的方法
2019/01/12 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
Python中文编码知识点
2019/02/18 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
python 多线程中join()的作用
2020/10/29 Python
StubHub新加坡:购买和出售全球活动门票
2017/03/10 全球购物
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
医学专业毕业生个人求职信
2013/12/25 职场文书
硕士生工作推荐信
2014/03/07 职场文书
出生公证书样本
2014/04/04 职场文书
租房安全协议书
2014/08/20 职场文书
法定授权委托证明书
2014/09/27 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书
《刷子李》教学反思
2016/02/20 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js