使用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 创建运动框架的实现代码
May 08 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
Jul 23 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
Nov 03 Javascript
js+css实现tab菜单切换效果的方法
Jan 20 Javascript
省市区三级联动下拉框菜单javascript版
Aug 11 Javascript
JS实现点击按钮获取页面高度的方法
Nov 02 Javascript
原生js编写autoComplete插件
Apr 13 Javascript
Bootstrap图片轮播效果详解
Oct 17 Javascript
微信小程序实现的picker多级联动功能示例
May 23 Javascript
js微信分享接口调用详解
Jul 23 Javascript
JS访问对象两种方式区别解析
Aug 29 Javascript
微信小程序实现打卡签到页面
Sep 21 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&mysql(四)
2006/10/09 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
php图像验证码生成代码
2017/06/08 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
动感效果的TAB选项卡jquery 插件
2011/07/09 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
用jquery等比例控制图片宽高的具体实现
2014/01/28 Javascript
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
2015/08/12 Javascript
不定义JQuery插件 不要说会JQuery
2016/03/07 Javascript
纯前端JavaScript实现Excel IO案例分享
2016/08/26 Javascript
XMLHttpRequest Level 2 使用指南
2016/08/26 Javascript
清除输入框内的空格
2016/12/21 Javascript
vue router2.0二级路由的简单使用
2017/07/05 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
进一步了解Python中的XML 工具
2015/04/13 Python
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
Python入门_条件控制(详解)
2017/05/16 Python
python下setuptools的安装详解及No module named setuptools的解决方法
2017/07/06 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
python获取磁盘号下盘符步骤详解
2019/06/19 Python
python tkinter图形界面代码统计工具(更新)
2019/09/18 Python
Django异步任务线程池实现原理
2019/12/17 Python
如何一键升级Python所有包
2020/11/05 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
利物浦足球俱乐部官方商店(美国):Liverpool FC US
2019/10/09 全球购物
实体的生命周期
2013/08/31 面试题
JSF界面控制层技术
2013/06/17 面试题
人力资源管理专业应届生求职信
2014/04/24 职场文书
企业公益活动策划方案
2014/08/24 职场文书
2015年招生工作总结
2015/05/04 职场文书
教师培训学习心得体会
2016/01/21 职场文书
MySQL学习之基础命令实操总结
2022/03/19 MySQL