扩展javascript库(下划线,jquery,主干等)

时间:2014-04-27 22:28:30

标签: jquery backbone.js underscore.js javascript

我在代码中使用了多个库,并希望使用自定义函数扩展它们。

我环顾了github,并了解实现这一目标的一般逻辑,但需要一些澄清。

扩展UNDERSCORE

(function() {

    _.mixin({

        // Custom methods

    });

}).call(this);

(function(){ }).call(this);代表什么?
我们为什么需要它呢? 为什么它在括号之间?
call(this);究竟做了什么?

扩展JQUERY

(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)吗?

如果你有时间回答我的一些非常棒的问题,我会对这一切感到困惑!

1 个答案:

答案 0 :(得分:3)

<强>下划线

  • (function(){})。call(this);代表谁?
  • 为什么我们需要它?
  • 为什么在括号之间?
  • 究竟是什么叫(这个);办?

这是一个自动执行匿名函数。

它创建了一个私有(函数)作用域,因此声明的任何变量(var)都不会泄漏到更高的作用域(可能是窗口)。

.call(this)只调用具有'this'上下文的函数(当前作用域,可能是窗口)。

<强>摘要

  • 声明匿名函数(未分配给变量)
  • 然后立即执行/调用它的上下文。