您的位置:知识库 » Web前端

jQuery的不足之处

来源: rainweb  发布时间: 2009-07-12 21:58  阅读: 3164 次  推荐: 0   原文链接   [收藏]  

使用Jquery有一段时间了,对Jquery轻便、易学易用、方便的DOM操作以及这个框架的设计思想都由衷的赞叹。但是Jquery在设计过程中也有 一些不合理的地方(当然,有些东西见仁见智,可能你并不觉得这不合理),今天看到了一篇文章,觉得写的挺有道理的,我做了一下整理。并不是说Jquery 很差,让大家不要用,而是通过这些内容来更好的了解和使用jQuery。

1.each工具的回调函数参数的设计。

jQuery.each(obj,callback)

通用遍历方法,可用于遍历对象和数组。
不同于遍历 jQuery 对象的 $().each() 方法,此方法可用于遍历任何对象。回调函数拥有两个参数:第一个为对象的成员或数组的索引,第二个为对应变量或内容。 如果需要退出 each 循环可使回调函数返回 false,其它返回值将被忽略。
很 明显,这个参数的设计不合理。应该将参数的顺序对调。原因很简单,通常做遍历的时候,我们只需要获取当前对应的变量或内容就可以了,大多数情况下是不需要 索引的。如果索引参数在后面,在不使用的情况下就可以省略。也许你觉得我在鸡蛋里面挑骨头,你看看jQuery的另外一个工具的设计就清楚了:

jQuery.grep(array,callback,[invert])
这个工具是对对象和数组做遍历用的,但是这个工具的callback函数的两个参数中第一个为对应变量或内容,第二个为对象的成员或数组的索引。正好与jQuery.each相反。

2.this指针的变换

在jQuery中this指针的变换是非常频繁的,可能稍不留神,就会出错。特别是在OO编程的时候。例如:

function Dog(){
        this.name="旺财";
}

Dog.prototype.eat=function(){
        $("div").click(function(){
                  alert(this.name+"在啃骨头");
         });
};

你会发现这段代码并不会像你想象的那样执行,因为this指针已经变换,指代的是当前的div对象,而不是Dog的实例。

3.jquery.inArray(value,array)工具的设计

就字面意思来说,这个函数应该返回true or false,事实上返回的是value在array第一次出现的位置。若不存在,返回-1。若你当作true或false来处理,就郁闷了,-1是true。

4.对OO的支持不够

jquery的DOM操作的支持很好很强大,但在OO方面却没有做任何工作。而且,就jQuery的编码风格也和OO有点格格不入。而其他框架如prototype,MooTools都有比较好的支持。

0
1

Web前端热门文章

    Web前端最新文章

      最新新闻

        热门新闻