使用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实现flash8类似的连接效果
May 03 Javascript
JQuery 浮动导航栏实现代码
Aug 27 Javascript
得到jQuery detach()后节点中的某个值实现代码
Feb 05 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
Mar 29 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
Apr 19 Javascript
如何使用Javascript正则表达式来格式化XML内容
Jul 04 Javascript
JavaScript实现九九乘法表的简单实例
Jun 07 Javascript
jQuery实现的表头固定效果实例【附完整demo源码下载】
Aug 01 Javascript
详解vue-cli构建项目反向代理配置
Sep 07 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
Aug 01 Javascript
微信小程序封装的HTTP请求示例【附升级版】
May 11 Javascript
vue设置动态请求地址的例子
Nov 01 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的password_hash()使用实例
2014/03/17 PHP
PHP+memcache实现消息队列案例分享
2014/05/21 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
使用XHProf查找PHP性能瓶颈的实例
2017/12/13 PHP
实例解析php的数据类型
2018/10/24 PHP
PHP的mysqli_thread_id()函数讲解
2019/01/24 PHP
微信支付之JSAPI公众号支付详解
2019/05/15 PHP
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
2011/04/01 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
2016/04/05 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
从parcel.js打包出错到选择nvm的全部过程
2018/01/23 Javascript
Vue实现内部组件轮播切换效果的示例代码
2018/04/07 Javascript
js动态引入的四种方法
2018/05/05 Javascript
JavaScript函数节流和函数去抖知识点学习
2018/07/31 Javascript
react中Suspense的使用详解
2019/09/01 Javascript
Python Paramiko模块的安装与使用详解
2016/11/18 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
调试Django时打印SQL语句的日志代码实例
2019/09/12 Python
python标准库OS模块详解
2020/03/10 Python
python轮询机制控制led实例
2020/05/03 Python
Django --Xadmin 判断登录者身份实例
2020/07/03 Python
美国体育用品商店:Academy Sports + Outdoors
2020/01/04 全球购物
UDP协议功能
2013/01/06 面试题
外贸实习生自荐信范文
2013/11/24 职场文书
安全生产网格化管理实施方案
2014/03/01 职场文书
毕业酒会致辞
2015/07/29 职场文书
同学聚会开幕词
2019/04/02 职场文书
能让Python提速超40倍的神器Cython详解
2021/06/24 Python
MySQL8.0升级的踩坑历险记
2021/11/01 MySQL
Spring中bean集合注入的方法详解
2022/07/07 Java/Android
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python