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