MooTools本地对象(Native Objects)概述

MooTools本地对象(Native Objects)基本介绍

JavaScript 包含有许多的 native object types (String, Array, Function, Boolean, Element, etc.) 在许多方面,乃不能不能满足我们的使用,留下了很多有待改进之处。
更重要的是,不同的浏览器执行这些对象都各不相同,因此很难写代码,我们需要在工作中,为不同的浏览器 所支持的对象写很多的对象支持判断。

英文是这样说的:

JavaScript contains numerous native object types (String, Array, Function, Boolean, Element, etc.) that in many ways leave a lot to be desired. What’s more, different browsers implement these objects differently, making it difficult to write code that works across them all without a lot of conditionals sniffing for different browsers.

MooTools 的 implements functionality 修改了低层的 native objects(加上了shortcut methods),使它们兼容各种主流的浏览器。
从而使它们通用一个API ,这些方法经常被使用,而且比他们的native counterparts 更加可靠。
MooTools不仅将帮助您处理了浏览器不一致性,而且也防止了您免受内存泄漏的影响。

英文是这样说的:

MooTools implements functionality into the native objects to make them both easier to work with (by adding shortcut methods) and more reliable (by doing all the browser sniffing for you and providing you with a single API that works for all browsers). These methods should always be used rather than their native counterparts. MooTools will not only help you deal with browser inconsistencies, but also protect you against things like memory leaks.

总之,更改原生对象的好处是(除了稍微的速度优势外),你可以向这些对象中添加方法并且扩展它们的功能。

Native Extensions 和 Native.implement

Native Extensions(扩展本地对象)

在这些本地的脚本群中 ,基本扩展到的默认对象,在JavaScript中有(目前,在 MooTools 的 Native code中有 Array, Element, Event, Function, Hash 和 String)。

针对这些扩展的对象都有许多实用的方法,在接下来的文章中我们会一一介绍这些扩展对象的方法的用法。

Native.implement(扩展本地对象的类)

我们已经知道了,MooTools 通过修改本地对象,来扩展这些对象自身的实用性。更重要的是,MooTools还允许您改变他们自己,从而扩展我们自己的方法。

在Mootools中,Implement用得最多的就是改变原生的对象,尤其是String,Array,Function和元素原型。这意味着,如果你有这个代码:

1
2
3
4
String.implement({   
    alert: function(){alert(this);},   
    log: function(){console.log(this);} 
});

那么任何字符串都会继承这个方法:

1
2
3
4
"foo".alert() 
//Alerts "foo" 
"foo".log()
//Logs "foo"

Foo:本意指程序员用来代表数据、功能或命令的变量。O’Reilly媒体认为FOO是Friends of O’Reilly的缩写,并把他们在2003年举办的年会命名为“2003 FOO”。现在则更多地指声势浩大的某行业大会。

想了解更多请看关于 MooTools的Classes 的文章。

一个真实应用:

本实例为给Array对象增加(implement)一个新的方法(invoke();)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
// We add the "invoke"-Method to Arrays 
Array.implement({ 
 
    invoke: function(fn, args){ 
        var result = []; 
 
        for (var i = 0, l = this.length; i < l; i++){ 
            if(this[i] && this[i][fn]) 
                result.push(args ? this[i][fn].pass(args, this[i])() : this[i][fn]()); 
        } 
        return result; 
 
    } 
 
});

查看demo

The implement method for both Class and Native work the same—they alter the prototype of all the objects of that type.

在本章中我们将深入的探讨以下这些native objects:
Array*
Object (a.k.a. Hash)
Function*
Number*
String*
Event
Element

站点统计