贴上它的完整代码吧 
var MooTools = {
'version': '1.2.1',
'build': '0d4845aab3d9a4fdee2f0d4a6dd59210e4b697cf'
};var Native = function(options){
options = options || {};
var name = options.name;
var legacy = options.legacy;//leg=祖先传下来之物
var protect = options.protect;//保护
var methods = options.implement;
var generics = options.generics;//共有的,通用的
var initialize = options.initialize;
var afterImplement = options.afterImplement || function(){};
var object = initialize || legacy;//obj=初始化||祖传
generics = generics !== false;//gen(共有的)=布尔值 object.constructor = Native;//本土的
object.$family = {name: 'native'};
if (legacy && initialize) object.prototype = legacy.prototype;
object.prototype.constructor = object; if (name){
var family = name.toLowerCase();
object.prototype.$family = {name: family};
Native.typize(object, family);//设置obj.type 返回布尔值
} var add = function(obj, name, method, force){//force=强制 //反之其一就执行
if (!protect || force || !obj.prototype[name]) obj.prototype[name] = method;//(受保护+不强制+有这个)才不执行
if (generics) Native.genericize(obj, name, protect);//(保护+有这个)不执行
afterImplement.call(obj, name, method);
return obj;
}; object.alias = function(a1, a2, a3){
if (typeof a1 == 'string'){
if ((a1 = this.prototype[a1])) return add(this, a2, a1, a3);
}
for (var a in a1) this.alias(a, a1[a], a2);
return this;
}; object.implement = function(a1, a2, a3){
if (typeof a1 == 'string') return add(this, a1, a2, a3);
for (var p in a1) add(this, p, a1[p], a2);
return this;
}; if (methods) object.implement(methods); return object;
};Native.genericize = function(object, property, check){//(检查+有这个)不执行
if ((!check || !object[property]) && typeof object.prototype[property] == 'function') object[property] = function(){
var args = Array.prototype.slice.call(arguments);
return object.prototype[property].apply(args.shift(), args);
};
};Native.implement = function(objects, properties){
for (var i = 0, l = objects.length; i < l; i++) objects[i].implement(properties);
};Native.typize = function(object, family){
if (!object.type) object.type = function(item){
return ($type(item) === family);
};
};var Hash = new Native({ name: 'Hash', initialize: function(object){
if ($type(object) == 'hash') object = $unlink(object.getClean());
for (var key in object) this[key] = object[key];
return this;
}});Hash.implement({ forEach: function(fn, bind){
for (var key in this){
if (this.hasOwnProperty(key)) fn.call(bind, this[key], key, this);
}
}, getClean: function(){
var clean = {};
for (var key in this){
if (this.hasOwnProperty(key)) clean[key] = this[key];
}
return clean;
}, getLength: function(){
var length = 0;
for (var key in this){
if (this.hasOwnProperty(key)) length++;
}
return length;
}});