确保jQuery插件不会覆盖jQuery本机方法的最佳方法是什么?

ale*_*lex 8 javascript jquery jquery-plugins

我正在编写一个jQuery插件,我想知道如何确保我不会覆盖未来的jQuery本机方法.

例如,我的插件名为Foo,用法是$('selector').foo().

jQuery 2.6已经注意到了Foo的流行,并决定将它包含在核心包中.它也是通过使用$('selector').foo().

我不希望我的Foo覆盖jQuery的原生Foo(或其他冲突).

这就是我提出来的......

(function($) {

  // If jQuery adds this method, we don't want to overwrite it
  if (typeof $.foo === 'function') {
    return;
  };

  $.fn.foo = function() {
     // Foo
  };  

})(jQuery);
Run Code Online (Sandbox Code Playgroud)

这是最好的方法吗?

Ada*_*sek 8

您可以跳过if语句并将定义检查构建到函数声明中.

(function($){

  $.fn.foo = $.fn.foo || function () {
    // only used if $.fn.foo is undefined
  }

})(jQuery)
Run Code Online (Sandbox Code Playgroud)