我在代码中使用了多个库,并希望使用自定义函数扩展它们。
我环顾了github,并了解实现这一目标的一般逻辑,但需要一些澄清。
(function() {
_.mixin({
// Custom methods
});
}).call(this);
(function(){ }).call(this);
代表什么?
我们为什么需要它呢?
为什么它在括号之间?
call(this);
究竟做了什么?
(function (factory) {
if ( typeof define === 'function' && define.amd ) {
define(['jquery'], factory);
} else if (typeof exports === 'object') {
module.exports = factory;
} else {
factory(jQuery);
}
}(function ($) {
// Custom methods
}));
什么是function(factory)
?扩展下划线时为什么不使用它?
为什么我们在第二个函数中将$
作为参数,但我们没有将_
与下划线一起使用?
;(function(factory) {
if (typeof define === 'function' && define.amd) {
define(['underscore', 'backbone'], factory);
} else {
factory(_, Backbone);
}
}(function(_, Backbone) {
// Custom methods
return Backbone;
}));
为什么我们return Backbone
结尾?我可以在这里省略function(factory)
并为我想要扩展的所有库制作一般function(factory)
吗?
如果你有时间回答我的一些非常棒的问题,我会对这一切感到困惑!
答案 0 :(得分:3)
<强>下划线强>
这是一个自动执行匿名函数。
它创建了一个私有(函数)作用域,因此声明的任何变量(var)都不会泄漏到更高的作用域(可能是窗口)。
.call(this)只调用具有'this'上下文的函数(当前作用域,可能是窗口)。
<强>摘要强>