使用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 弹出层插件实现代码
Oct 24 Javascript
extjs之去除s.gif的影响
Dec 25 Javascript
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
Feb 27 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
May 14 Javascript
简单的JS时钟实例讲解
Jan 13 Javascript
微信小程序开发经验总结(推荐)
Jan 11 Javascript
layui选项卡效果实现代码
May 19 Javascript
详解vue模拟加载更多功能(数据追加)
Jun 23 Javascript
纯javascript实现选择框的全选与反选功能
Apr 08 Javascript
微信小程序云开发之使用云数据库
May 17 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
Sep 03 Javascript
jQuery实现移动端图片上传预览组件的方法分析
May 01 jQuery
讲两件事: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截取字符串长度函数
2015/10/29 PHP
Yii数据读取与跳转参数传递用法实例分析
2016/07/12 PHP
[原创]php实现 data url的图片生成与保存
2016/12/04 PHP
js 颜色选择器(兼容firefox)
2009/03/05 Javascript
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
js 判断脚本加载完毕的代码
2011/07/13 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
javascript表单验证使用示例(javascript验证邮箱)
2014/01/07 Javascript
node.js中的fs.futimes方法使用说明
2014/12/17 Javascript
javascript框架设计之框架分类及主要功能
2015/06/23 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
2016/05/27 Javascript
JS基于正则表达式的替换操作(replace)用法示例
2017/04/28 Javascript
详解Vue.js自定义tipOnce指令用法实例
2018/12/19 Javascript
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
JS实现移动端在线签协议功能
2019/08/22 Javascript
js实现图片无缝循环轮播
2019/10/28 Javascript
使用python装饰器验证配置文件示例
2014/02/24 Python
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
Python单例模式的两种实现方法
2017/08/14 Python
django项目搭建与Session使用详解
2018/10/10 Python
PyCharm安装Markdown插件的两种方法
2019/06/24 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
python各种excel写入方式的速度对比
2020/11/10 Python
Python3利用openpyxl读写Excel文件的方法实例
2021/02/03 Python
使用CSS3的appearance属性改变元素的外观的方法
2015/12/12 HTML / CSS
社团招新策划书
2014/02/04 职场文书
《要下雨了》教学反思
2014/02/17 职场文书
食品安全汇报材料
2014/08/18 职场文书
竞选班干部演讲稿300字
2014/08/20 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
房屋租赁合同补充协议
2014/10/11 职场文书
银行求职信模板
2015/03/20 职场文书
深入解析Apache Hudi内核文件标记机制
2022/03/31 Servers