使用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的执行顺序 之实战篇
Mar 03 Javascript
JS的encodeURI和java的URLDecoder.decode使用介绍
May 08 Javascript
AngularJS实现星星等级评分功能
Sep 24 Javascript
详解从angular-cli:1.0.0-beta.28.3升级到@angular/cli:1.0.0
May 22 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
Oct 26 Javascript
Node.js使用MySQL连接池的方法实例
Feb 11 Javascript
详解.vue文件解析的实现
Jun 11 Javascript
微信小程序实现下拉菜单切换效果
Mar 30 Javascript
vue 地图可视化 maptalks 篇实例代码详解
May 21 Javascript
微信小程序和H5页面间相互跳转代码实例
Sep 19 Javascript
js实现点击生成随机div
Jan 16 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
Mar 03 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 Smarty 字符比较代码
2011/02/27 PHP
PHP中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
PHP判断一个字符串是否是回文字符串的方法
2015/03/23 PHP
为百度UE编辑器上传图片添加水印功能
2015/04/16 PHP
解读PHP中的垃圾回收机制
2015/08/10 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
php网页版聊天软件实现代码
2016/08/12 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
jquery代码实现多选、不同分享功能
2015/07/31 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
整理关于Bootstrap排版的慕课笔记
2017/03/29 Javascript
JS实现标签滚动切换效果
2017/12/25 Javascript
Element输入框带历史查询记录的实现示例
2019/01/15 Javascript
微信小程序绘制图片发送朋友圈
2019/07/25 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
JS实现横向跑马灯效果代码
2020/04/20 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
2020/08/06 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
让python json encode datetime类型
2010/12/28 Python
python中argparse模块用法实例详解
2015/06/03 Python
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
更新修改后的Python模块方法
2019/03/03 Python
python opencv调用笔记本摄像头
2019/08/28 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
Spanx塑身衣官网:美国知名内衣品牌
2017/01/11 全球购物
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
有个性的自我评价范文
2013/11/15 职场文书
老同学聚会感言
2014/02/23 职场文书
乡镇党建工作汇报材料
2014/10/27 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书
Python实战之疫苗研发情况可视化
2021/05/18 Python
el-form每行显示两列底部按钮居中效果的实现
2022/08/05 HTML / CSS