`

[07/9/28] 总结一下mootools的瑕疵吧 (持续更新)

阅读更多
这个帖子我会慢慢总结一些不足,欢迎大家补充,并即时更正我的错误.

(这些不足如果在新版本里已经修正,我会标出.svn上的版本我不做考虑)

1 each方法无法break.
例子: 找出一个数组中的第一个偶数.
var myarr=[1,2,3,15,5,21,22];
var rs=0;

myarr.each(function(val,idx){
if (val%2 ==0 ) {
rs=val;
return ; //return不是我想要的,我想在这里方便快捷的结束each,咋办?
}
});

目前我想到的是 使用 throw抛出一个异常,不知道各位还有更好的解决方案没.
(当然修改moo源代码可以得到更好的方案)

2 Element对象没有setValue方法.
这个比较不能忍啊 呵呵,想设置页面表单域的值都要自己想办法,不理解为啥!


3 Json.Remote对象里的hardcode.
见代码里的这句大家就明白了:
send: function(obj){
return this.parent(this.url, 'json=' + Json.toString(obj));
}
我想用这个方法,那服务端只能接受名为json的json序列化字符串. 太不灵活了.

4 Json.Remote的send是否应该考虑支持发送多个json串呢?

5. Class 里的一个bug
var Class = function(properties){
	var klass = function(){
		return (arguments[0] !== null && this.initialize && $type(this.initialize) == 'function') ? this.initialize.apply(this, arguments) : this;
	};
	$extend(klass, this);
	klass.prototype = properties;
	klass.constructor = Class;
	return klass;
};

如果 我要传的第一个参数就是null时 那么整个类机制将失效

例如 一个类的构造方法有两个参数 ,而他又有一个子类 子类也是如此
我在创建子类的时候,如果构造方法的第一个参数我就是要传null,
那么在子类里调用父类的方法将失败.
修改方法 将 null 换成其他的特殊值.
在新版本moo里 用的是 moo定义的 $empty
arguments[0] !== $empty





分享到:
评论
8 楼 renber 2008-06-25  
mootools1.1确实没有setValue,如果有的话,我相信用setProperty是没法替代的,它会考虑到input select span div 等很多可以插入值的元素,但是各个不一样,而且增加这么一个函数比之我们直接用.value或者.setHTML成本要大得多,对了,如果有的话,估计还会跟setHTML重复,完全没必要我认为,如果仅仅是相当于setProperty('value',value)的话,那为什么不直接.value呢
7 楼 dreamwang 2007-12-18  
请问用prototype 可以实现

var obj=$("mydiv");
obj.update("<span>beforeObj</span>");
obj.insert("<span>name</span><span>id</span><span>password</span>");


而mootools必须
var obj=$("mydiv");
obj.setHTML("<span>beforeObj</span>");
  var a=new Element('span');
  a.setText("name");
  a.injectInside(obj);
  ............

有没有更好的方法?
6 楼 llying 2007-10-06  
zhw 写道
fins 写道
这个帖子我会慢慢总结一些不足,欢迎大家补充,并即时更正我的错误.
2 Element对象没有setValue方法.
这个比较不能忍啊 呵呵,想设置页面表单域的值都要自己想办法,不理解为啥!


setProperty 应该可以吧, 它就是做这些事的。

非常同意~!
Element.setProperty('value','value')完全可以
可能是mootools疏忽或者不想做重复的事情
5 楼 fins 2007-09-28  
又发现一个重大瑕疵
4 楼 agile_boy 2007-09-14  
2 Element对象没有setValue方法.
确实是的,在Element.Form中,也只是提供了getValue方法

1 关于each,没有break也是可以忍受的啊,毕竟each还不是关键字啊
3 楼 radar 2007-09-14  
不修改源码很麻烦啊!
2 楼 radar 2007-09-14  
Array.prototype.each=function(fn){
    for ( var i = 0, ol = this.length, val = this[0]; i < ol && fn.call(val,i,val) !== false; val = this[++i] )
{}
}
function aa(index,val){
    if(val>2)
   return false;
     else
    alert(val)
}
[1,2,3].each(aa);
1 楼 zhw 2007-09-14  
fins 写道
这个帖子我会慢慢总结一些不足,欢迎大家补充,并即时更正我的错误.
2 Element对象没有setValue方法.
这个比较不能忍啊 呵呵,想设置页面表单域的值都要自己想办法,不理解为啥!


setProperty 应该可以吧, 它就是做这些事的。

相关推荐

    mootools

    9. **插件生态**:除了核心库,MooTools还有一个活跃的社区,开发了许多插件,如FormValidator(表单验证)、Element.Forms(元素表单化)等,丰富了其功能。 通过阅读《mootools.doc》文档,你可以深入了解...

    mootools 弹出框

    **标题:“MooTools 弹出框”** MooTools 是一个轻量级的JavaScript库,它提供了一系列强大的工具和方法来帮助开发者构建交互式的Web应用程序。在MooTools中,弹出框(通常称为“对话框”或“提示框”)是一种常见...

    基于Mootools.js的动画效果的多级折叠菜单.rar

    **基于Mootools.js的动画效果的多级折叠菜单** Mootools.js是一个轻量级且功能强大的JavaScript库,它提供了丰富的DOM操作、事件处理、动画效果以及面向对象的编程特性。这款基于Mootools.js的多级折叠菜单,不仅...

    mootools详细教程chm

    **MooTools 详解** MooTools 是一个轻量级且功能强大的JavaScript库,它提供了一种优雅的方式来处理DOM操作、事件、动画效果以及Ajax交互。这个“mootools详细教程chm”包含了丰富的资源,旨在帮助开发者深入理解和...

    Mootools1.2.3各版本下载

    总结,MooTools 1.2.3是一个强大的JavaScript库,它为Web开发提供了便利的工具和API。通过理解和掌握其核心特性,开发者可以高效地构建交互丰富的网页应用。下载并使用MooTools,无论是通过官方渠道还是通过像"code...

    mootools tree and table

    首先,让我们来了解一下MooTools的核心概念。MooTools是一个轻量级的JavaScript库,其设计理念是模块化和面向对象。它提供了丰富的API,包括DOM操作、事件处理、动画效果以及各种UI组件。MooTools的类系统允许开发者...

    mootools框架入门教程

    mootools框架入门教程 mootools框架是一个功能强大且灵活的JavaScript框架,它提供了许多实用的方法来简化DOM操作和ajax开发。下面将对mootools框架的Element篇进行详细的介绍。 Element篇 Element篇是mootools...

    Mootools 1.2.1 API 文档

    Mootools是一款强大的JavaScript库,它为Web开发者提供了丰富的功能和高效的工具,使得在浏览器端进行复杂的JavaScript编程变得更加便捷。Mootools 1.2.1是该库的一个版本,其API文档对于理解和使用这个库至关重要。...

    mootools层拖动实现

    Mootools是一个强大的JavaScript库,它提供了许多功能,如DOM操作、动画效果、事件处理以及模块化开发等。在“mootools层拖动实现”这个主题中,我们将深入探讨如何利用Mootools库实现可拖动的div层。这对于创建交互...

    MooTools 帮助文档 中文

    MooTools是一个简洁,模块化,面向对象的JavaScript框架。它能够帮助你更快,更简单地编写可扩展和兼容性强的JavaScript代码。Mootools从Prototype.js中汲取了许多有益的设计理念,语法也和其极其类似。但它提供的...

    MooTools1.4中文PDF手册+MooTools-Core-1.5.1.js

    MooTools是一款强大的JavaScript库,它提供了一套优雅的面向对象的编程接口和实用的工具集,便于开发者创建高效、可维护的Web应用程序。MooTools 1.4中文PDF手册与MooTools-Core-1.5.1.js是学习和使用MooTools的核心...

    mootools 1.2 中文文档

    MooTools是一个轻量级的JavaScript库,设计思想源自于Prototype,但两者在实现和功能上有许多不同之处。MooTools 1.2是该库的一个稳定版本,它提供了丰富的功能集,包括DOM操作、事件处理、动画效果、Ajax交互等。这...

    mootools源码分析.rar

    9. **浏览器兼容性**:MooTools致力于跨浏览器兼容性,通过源码分析,我们可以看到它是如何检测和处理不同浏览器之间的差异的。 10. **性能优化**:MooTools源码中充满了性能优化的细节,比如事件委托、缓存机制和...

    MooTools帮助文档api

    MooTools 帮助文档 api ajax

    mootools简体中文Calendar插件

    基于mootools 1.2版本,仅在源代码中增加了一些显示中文的内容,建议调用时使用: myCal1 = new Calendar({ date1: 'Y-m-d' }, { direction: 1, tweak: { x: 6, y: 0 }}); 显示按年月日方式比较符合我们的习惯。

    Mootools v1.11 文档 pdf html Mootools v1.2.1 js

    首先,我们来详细了解一下MooTools的核心特性: 1. **模块化设计**:MooTools遵循CommonJS规范,采用模块化结构,允许开发者按需加载所需的功能,减少页面加载时间,提高性能。 2. **链式调用**:MooTools的一大...

    mootools开发手册中文版

    MooTools 是一个轻量级且模块化的JavaScript库,它为Web开发提供了丰富的功能和工具。这个"mootools开发手册中文版"是针对MooTools 1.1.js版本的详细指南,旨在帮助开发者更好地理解和使用这个JavaScript框架。本文...

    mootools-release-1.11

    "mootools-release-1.11"是MooTools的一个特定版本,发布于2010年,旨在提供稳定性和兼容性的更新。这个版本在当时是一个重要的里程碑,因为它包含了多个关键的改进和修复。 MooTools的核心设计理念是遵循“Write ...

    mootools教程

    在Ajax开发中,MooTools的Element方法尤其有用,因为它们允许开发者轻松地更新DOM结构,添加、删除或修改内容,而无需关心浏览器兼容性问题。MooTools已经处理了这些问题,使得开发者可以专注于业务逻辑。 总之,...

    MooTools.Essentials

    9. **兼容性**:MooTools致力于跨浏览器兼容性,确保在多种浏览器环境下运行良好,减少了开发者处理兼容问题的时间。 10. **文档和社区**:MooTools拥有一套完整的官方文档,便于开发者查阅和学习。此外,活跃的...

Global site tag (gtag.js) - Google Analytics