gpt4 book ai didi

javascript - Mootools代码解释

转载 作者:行者123 更新时间:2023-11-29 15:00:23 27 4
gpt4 key购买 nike

我正在尝试通过阅读源代码来学习 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 行函数如何调用存储在其本地原型(prototype)属性中的实现函数?

Function.implement({

hide: function(){
this.$hidden = true;
return this;
},

protect: function(){
this.$protected = true;
return this;
}

});

是不是因为 Function 是一个函数所以它的内部 [[prototype]] 是 Function.prototype ?

最佳答案

  • 您会注意到 Function 被引用的次数比其他构造函数多,因此可能是它们添加了局部引用以实现微小的性能提升以及压缩,因为局部变量可以被混淆。 ...(再看一眼,我确实看到了比原来更多的对其他构造函数的引用。)

  • 您还会注意到链接到 Function.prototype.extend 函数的 .overloadSetter() 用一堆额外的代码包装了该函数,鸭子打字等。所以他们没有使用它的原因可能是这个额外的代码显然是他们内部使用不需要的。

  • 因为 implement 扩展了原型(prototype),所以它并不总是可取的。有时您只是不想在所有实例上使用额外的方法,但您确实希望将它们存储在逻辑命名空间中,就像存储在 Object 构造函数中的 native 方法一样。

    <

关于javascript - Mootools代码解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10955626/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com