我正在尝试通过阅读源代码来学习 Mootools,但我不明白为什么它会制作 Function 的本地副本:
var Function = this.Function;
但是为什么它不制作 Array、Number 和 String 的本地副本来做同样的事情,例如它们首先出现被直接分配给,那么为什么要区别对待 Function 呢?
Function.from = function(item){
return (typeOf(item) == 'function') ? item : function(){
return item;
};
};
Array.from = function(item){
if (item == null) return [];
return (Type.isEnumerable(item) && typeof item != 'string') ? (typeOf(item) == 'array') ? item : slice.call(item) : [item];
};
Number.from = function(item){
var number = parseFloat(item);
return isFinite(number) ? number : null;
};
String.from = function(item){
return item + '';
};
另外我不明白第 149 行函数如何调用存储在其本地原型属性中的实现函数?
Function.implement({
hide: function(){
this.$hidden = true;
return this;
},
protect: function(){
this.$protected = true;
return this;
}
});
是因为 Function 是一个函数,所以它的内部 [[prototype]] 是 Function.prototype 吗?