使用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 相关文章推荐
json对象转字符串如何实现
Dec 02 Javascript
jquery实现多行文字图片滚动效果示例代码
Oct 10 Javascript
jQuery判断指定id的对象是否存在的方法
May 22 Javascript
jQuery 限制输入字符串长度
Jun 20 Javascript
jQuery插件Validation快速完成表单验证的方式
Jul 28 Javascript
JS判断是否手机或pad访问实现方法
Dec 09 Javascript
Bootstarp基本模版学习教程
Feb 01 Javascript
vue form check 表单验证的实现代码
Dec 09 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
Oct 08 Javascript
js实现贪吃蛇小游戏
Oct 29 Javascript
vue使用一些外部插件及样式的配置代码
Nov 18 Javascript
Vue发布订阅模式实现过程图解
Apr 30 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中养成7个面向对象的好习惯
2010/01/28 PHP
Laravel 5 框架入门(三)
2015/04/09 PHP
List the Codec Files on a Computer
2007/06/11 Javascript
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
使用jQuery时Form表单元素ID和name命名大忌
2014/03/06 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
JS使用eval解析JSON的注意事项分析
2015/11/14 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
jQuery动态生成不规则表格(前后端)
2017/02/21 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
node app 打包工具pkg的具体使用
2019/01/17 Javascript
浅谈Vue CLI 3结合Lerna进行UI框架设计
2019/04/14 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
2020/04/30 Javascript
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
Python安装lz4-0.10.1遇到的坑
2018/05/20 Python
python用pandas数据加载、存储与文件格式的实例
2018/12/07 Python
python re正则匹配网页中图片url地址的方法
2018/12/20 Python
说说如何遍历Python列表的方法示例
2019/02/11 Python
对Python3 * 和 ** 运算符详解
2019/02/16 Python
使用Python将字符串转换为格式化的日期时间字符串
2019/09/01 Python
Python 类属性与实例属性,类对象与实例对象用法分析
2019/09/20 Python
Python描述数据结构学习之哈夫曼树篇
2020/09/07 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
CSS3中的Media Queries学习笔记
2016/05/23 HTML / CSS
长安大学毕业生自我鉴定
2014/01/17 职场文书
社区消防工作实施方案
2014/03/21 职场文书
新闻学专业求职信
2014/07/28 职场文书
关于召开会议的通知
2015/04/15 职场文书
《秋天的图画》教学反思
2016/02/19 职场文书
SpringBoot整合Redis入门之缓存数据的方法
2021/11/17 Redis