松弛绑定

默认情况下,underscore 对象 _ 会覆盖全局对象上同名的 _ 属性。但是,underscore 也不过于蛮横,他会保存之前已经存在的 _ 属性, 因为像是 lodash 这样的一些库也喜欢将自己的对象命名为 _

var previousUnderscore = root._;

当用户已经在全局对象上绑定了 _ 对象时,可以通过 underscore 提供的 noConflict 函数来重命名 underscore 对象,或者说是手动获得 underscore 对象,避免与之前的 _ 冲突:

var underscore = _.noConflict();

看到 noConflict 的源码实现,我们发现,在其内部,将会恢复原来全局对象上的 _

 /**
 * 返回一个 underscore 对象,把_所有权交还给原来的拥有者(比如 lodash)
 */
_.noConflict = function () {
    // 回复原来的_指代的对象
    root._ = previousUnderscore;
    // 返回 underscore 对象
    return this;
};

results matching ""

    No results matching ""