论坛首页 Web前端技术论坛

我为什么选择mootools,抛弃了prototype. (mootools与prototype 核心代码分析)

浏览 90896 次
该帖已经被评为精华帖
作者 正文
   发表时间:2007-09-13  
今天看了一下MOOTOOLS 感觉有些思想不错值得吸取 于是把自己的js框架的类创建方法又增加了一个阿MOOTOOLS那种的后来发现 这种方法很不直观,按照常理new 返回的应该是一个实例而不是一个类,我要得到一个对象得new两次,这种写法我实在不能接受,于是把代码里面好的东西整理留下了 创建类这种东西 个人觉得还是prototype直观一些,最起码大家一看就知道 那东西要干什么

可能是我太菜了吧 还没有达到各位大侠的那种 境界吧
0 请登录后投票
   发表时间:2007-09-13  
1 如果你创建一个类 只要生成一个对象 那么确实 是"得到一个对象得new两次"
但如果 一个类只生成一个对象,那么还有必要用类吗?


2 如果你不喜欢new Class 那么你可以自己简单的再封装一个 Class.create的,这个应该不难吧


3 类 也是对象, new一个类也很正常吧 呵呵
0 请登录后投票
   发表时间:2007-09-13  
dempire 写道
今天看了一下MOOTOOLS 感觉有些思想不错值得吸取 于是把自己的js框架的类创建方法又增加了一个阿MOOTOOLS那种的后来发现 这种方法很不直观,按照常理new 返回的应该是一个实例而不是一个类,我要得到一个对象得new两次,这种写法我实在不能接受,于是把代码里面好的东西整理留下了 创建类这种东西 个人觉得还是prototype直观一些,最起码大家一看就知道 那东西要干什么

可能是我太菜了吧 还没有达到各位大侠的那种 境界吧


这点确实有些怪怪的,另外,自己可以做点封装类似于prototype的形式。
0 请登录后投票
   发表时间:2007-09-21  
楼主不厚道,题目写《我为什么选择mootools,抛弃了prototype. (mootools与prototype 核心代码分析) 》,却要扯上Jquery。

几个库,运行性能网上有一份测试,谁好谁坏看测试就知道。(貌似Jq拿下大部分性能第一)

有两种方式构建软件设计,一种是把软件做得很简单以至于明显找不到缺陷;另一种是把它做得很复杂以至于找不到明显的缺陷。但是最终都是要解决某个实际问题。不管高深也好,简单也好,能够把问题在最少的时间内用最少的步骤解决就是最好的。

楼主研究代码的深入让人钦佩,却完全不顾各种设计思想,全然不顾系统性能而遑论优劣。稍有读死书的嫌疑。
0 请登录后投票
   发表时间:2007-09-21  
根本不是我要引到jquery上的,是回帖的网友把我引到jquery上的
而且事实上我几次三番的说过 我不了解jquery 我说的东西不够准确

唉 无奈了 都

另外我是最不爱读书的人 活书死书都不爱读 我就是喜欢看代码 然后把他们学来 用到自己的东西里

不过你不是我身边的人 也没和我一起工作过 不了解我也正常 呵呵
0 请登录后投票
   发表时间:2007-09-26  
关注中,不过不喜欢prototype.js的默认的编码是UTF-8,而且也不知道怎么改?
0 请登录后投票
   发表时间:2007-09-29  
hred 写道
楼主不厚道,题目写《我为什么选择mootools,抛弃了prototype. (mootools与prototype 核心代码分析) 》,却要扯上Jquery。

几个库,运行性能网上有一份测试,谁好谁坏看测试就知道。(貌似Jq拿下大部分性能第一)


这个测评是jQuery自己做的,客观性难说,有个反驳的,《为什么我不用jquery》
http://warpspire.com/tipsresources/interface-scripting/why-i-dont-use-jquery/
0 请登录后投票
   发表时间:2007-10-17  
在看楼主的这个文章,我花了一个星期的时间去分析mootools的源码。我又去看了一下prototype1.6的源码,发现prototype无论怎么改都改变不了本身的缺陷。
在设计中,mootools没有的说了。特别是plugin,和extend的功能太强了。做为基础lib是再好不过的。

0 请登录后投票
   发表时间:2007-10-17  
不过源码是有点难理解。当你理解,你发现js世界原来可以如此奇妙。prototype源码是很直接的。但是对你有了对比,就会发现什么东西是好是坏。jquery听说很好用。不过Ext2.0倒是可以关注一下。
0 请登录后投票
   发表时间:2007-10-20  

[quote]

下面来看看moo的Class.extend.
moo的Class.extend才是我们期待的真正的"类继承",看一下官方的示例

 

代码
  1. var Animal = new Class({   
  2.     initialize: function(age){   
  3.         this.age = age;   
  4.     }   
  5. });   
  6. var Cat = Animal.extend({   
  7.     initialize: function(name, age){   
  8.         this.parent(age); //will call the previous initialize;   
  9.         this.name = name;   
  10.     }   
  11. });   

<script>render_code();</script>

 

看那个parent() !!!!
通过moo的Class.extend实现的继承提供一个关键的方法 parent().

[/quote]

看到这里,我在想为什么ext要做的那么蠢,我们都知道ext要是想引用自己的parent类是多么的困难。

但是我觉得moo的做法是错误的,因为js不是java,java的Class机制很健全,而js只能在function基础上扩展。

如果像moo这么做的话,那我问你我的Class里面需要一个parent属性怎么办?Node Class肯定是有parent这个属性,怎么区分?? 是不是要自己来hack一下,this._parent = this.parent, 但是如果我的Class里面还有_parent属性呢? js的Class设计不仅仅要考虑方便,还要想想是不是给用户留下了陷阱。

0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics