这是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);
});