论坛首页 AJAX版 JavaScript

莫要对一个框架轻下结论

浏览 3752 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2008-05-10
对一个框架下结论:Prototype是彻头彻尾的垃圾 完毕

最cool的一句:
RegExp.prototype.match=RegExp.prototype.test;

难以想象这代码居然会出现在一个叫框架的东西中
   
0 请登录后投票
最后更新时间:2008-05-11
RegExp.prototype.match=RegExp.prototype.test;

不是吧?有否上下文?
   
0 请登录后投票
最后更新时间:2008-05-12
sp42 写道
RegExp.prototype.match=RegExp.prototype.test;

不是吧?有否上下文?

没有 全局的 上下文跟这个没关系
你可以到prototype1.6源码里找找看看
人家就是喜欢用 /XXXXX/g.match
   
0 请登录后投票
最后更新时间:2008-05-12
而且你知道什么叫挨骂没够不
pt1.6还在玩这个:
Object.extend(Array.prototype, {
   
0 请登录后投票
最后更新时间:2008-05-13
没看1.6的代码,如果真是/XXXXX/g.match,Object.extend(Array.prototype, {,我觉得这个prototype太坏了。太混淆视听了。就像合成人造兽一样怪异。
   
0 请登录后投票
最后更新时间:2008-05-13
好像一不小心嘴里也能排便的感觉……
regexp.search(string)好像可以,regexp.replace...不好办了……
奇也。
   
0 请登录后投票
最后更新时间:2008-05-13
s79 写道
好像一不小心嘴里也能排便的感觉……
regexp.search(string)好像可以,regexp.replace...不好办了……
奇也。

你这话说的有点太缺德

不过就凭这种做法 可以看到PT作者从来没有尊重过语言的设计者 也没尊重过自己的用户 只是在凭自己的喜好想当然地编写这框架
这只是一个很显然的例子 其实即使PT受到好评的特性也差不多 举两个例子:
$ $A 难道是为了让程序员少写几个字母而写了这么个东西?  是不是怕使用的人写document.getElementById或者Array.prototype.slice会累死啊?

Class Class.Methods 这个更有意思了 明明js本身就能创建类 非要用Class.create js明明类本身就是构造函数 非要在里面调用prototype.initialize当构造函数 真是绝了 把这些全弄进去算了:function add(a,b){return a+b}; function plus(a,b){return a*b};
   
0 请登录后投票
最后更新时间:2008-05-13
扯远了

回到楼主说的
YUI相比MooTools那种模仿PT的框架要强的多
楼主评价为严谨是恰当的
很重要的一点是 这个框架是给真正的程序员使用的 它在力求减少命名污染和保持框架跟语言的一致 而不是玩弄一些魔术欺骗初学者
   
0 请登录后投票
最后更新时间:2008-05-14
听上面说了这么多,到底研究哪一个好呢?
   
0 请登录后投票
最后更新时间:2008-05-15
因为DOM对象不能以兼容的方式在不同浏览器中扩展其prototype(像String.prototype.newMethod这样),所以一般用一下两种方法增加处理DOM对象的方法。

1、在获取、创造DOM对象的函数的返回值加上一层包装(包装DOM对象或对象们为oDOM),然后调用这个oDOM的方法修改DOM的内容,如oDOM.addClass("newClass")。
2、获取、创造DOM对象的函数返回的是简单的DOM对象或对象集合。同事抽象所有处理DOM的方法到一个oDOM对象里,调用这个“方法集”的方法来修改DOM的内容,如oDOM.addClass(DOM,"newClass")。

两种方法看你习惯怎么写了,效率也好,可读性也好都差不多。都能实现对于DOM对象扩展方法的统一管理。

而/XXXXX/g.match就搞不清是为什么了。match是String的方法,参数是RegExp,把他们调个头虽然能用,但其实是没有任何必要的,不应该存在框架这样本该精简的东西里。

从框架角度分级的话:
0级(base,扩展原有对象的方法,要精简,包括Ajax部分)
1级(effect,增加常用效果转换函数,如tween、drag、maskLayer、fade等)
2级(component,对话框、列表、树、日历等)
3级(application,用户定义能实现一定功能的模块)

一些框架只做0级prototype1.4/mootools1.2,和1级jquery1.2,一些做到了3级,如EXT 1.0 2.0。
   
0 请登录后投票
论坛首页 AJAX版 JavaScript

跳转论坛:
JavaEye推荐