MooTools1.3.1 API(Core)学习及试译(一)——Core

写在前面:由于自身英语水平有限,所以翻译不敢保证能让所有人都理解,如果您在阅读中发现什么疑问,请务必及时查看官方API,以免误导。另外,有部分是未经翻译的,一方面是因为找不到合适的中文描述之,还有就是有的地方看英文更易懂~

这是MooTools1.3.1API(Core)第一部分——Core,是MooTools中使用的各类方法

//Type: Core
//包括MooTools中使用的各类方法

Function: typeOf
返回一个对象的类型
语法:typeOf(obj);
参数obj - (object) 内嵌的对象
返回:
'element' - (string) 如果是DOM的元素节点,返回'element'
'elements' - (string) Element对象的实例
'textnode' - (string) DOM文本节点
'whitespace' - (string) DOM空格节点
'arguments' - (string) arguments 对象
'array' - (string) 数组
'object' - (string) 对象
'string' - (string) 字符串
'number' - (string) number类型
'date' - (string) date类型
'boolean' - (string) 布尔类型
'function' - (string) function类型
'regexp' - (string) 正则表达式对象
'class' - (string) 一个类 (created with new Class or the extend of another class).
'collection' - (string) HTML元素的集合,如childNodes,getElementsByTagName获取到的元素集合
'window' - (string) window object
'document' - (string) document object
'event' - (string) 事件(event)
'null' - (boolean) 空(null)、未定义(undefined)、NaN、或不是以上任何一种

alert(typeOf([]));//array


Function: instanceOf
检测对象是否是一个特定类型的实例
语法:instanceOf(item, object)
参数:item - (mixed) 需要检测的项目
	  object - (mixed) 作为对比参考的对象
返回:(boolean) 这个项目是否是参考对象的实例

var foo = [];
alert(instanceOf(foo, Array));//true
alert(instanceOf(foo, String));//false

var myClass = new Class();
alert(instanceOf(myClass, Class));//true


//Type
//MooTools扩充了原有的类,如array、string,让它们更有用
//MooTools使用(或扩展)的类:String、Array、Number、Function、RegExp、Date、Boolean
//MooTools自定义的类:Element、Elements、Event

Type method: implement
在类型(type)的原型(prototype)上添加新方法的方法
语法:myType.implement(name, method);
参数:name - (string) 新方法名
	  method - (function) 方法的函数体
或者 myType.implement(methods);
参数:methods - (object),名-值对,key是方法名,value是方法函数体
返回:(object) The type

Array.implement('limitTop', function(top) {
	for(var i=0,len=this.length; i<len; i++) {
		if(this[i] > top) {
			this[i] = top;
		}
	}
	return this;
});
alert([1,2,3,4,5,6].limitTop(5));//[1,2,3,4,5,5]

String.implement({
	repeat: function(n) {
		return (new Array(n+1)).join(this);
	},
	FTW: function() {
		return this + 'FTW';
	}
});
alert('string'.repeat(3) + ' ' + 'string'.FTW());//stringstringstring stringFTW


Type method: extend
为某个类型(type)添加一个或多个静态方法,接受其他类型的方法以将参数转换成为此类型
语法:myType.extend(name, method);
参数:name - (string) 新方法名
	  method - (function) 方法的函数体
或者myType.extend(methods);
参数:methods - (object),名-值对,key是方法名,value是方法函数体
返回:(object) The type

RegExp.extend('from', function(pattern, flag) {
	return new RegExp(pattern, flag);
});
var p = RegExp.from('tri', 'g');
alert(p.test('string'));//true

String.extend('parseColor', function(color) {
	if(!/(^#\w{3,6}$)|(^rgb\(\d{0,3},\s*\d{0,3},\s*\d{0,3}\)$)/gi.test(color)) {
		switch(color) {
			case 'red':
				return '#F00';
			break;
			case 'green':
				return '#0F0';
			break;
			case 'blue':
				return '#00F';
			break;
		}
	} else {
		return color;
	}
});
$('a').setStyle('color', String.parseColor('red'));


Generics
所有类型的大多数方法都可以作为泛型函数(generic functions)来使用,包括js中已经存在的方法、MooTools添加的方法或者用户自定义的方法
var everyArgBiggerThanTwo = function(){
    // Arguments类型调用Array的every方法:
    return Array.prototype.every.call(arguments, someFunction);
    // 还可以这样用:
    return Array.every(arguments, someFunction);
};
这在一个确定类型的方法被作为其他类型的方法使用时很有用,像上面的例子,Array类型的every方法用在了Arguments类型中

语法:Type.methodName(thisArg[, arg1, arg2, ...]);
参数:thisArg - (mixed) This is the subject, which is usually thisArg.method([arg1, arg2, ...]);.
	  arg1, arg2, ... - (mixed) Additional arguments which will be passed as method arguments.
返回:(mixed) 任何methodName通常返回的值

alert(Array.clone('string'));//s,t,r,i,n,g
Array.each('string',function(item, index) {
	alert(index + ' = ' + item);
});
;
posted @ 2011-04-05 21:42  chemdemo  阅读(699)  评论(0编辑  收藏  举报