最佳方法可选设置jQuery插件

时间:2012-10-30 06:19:39

标签: javascript jquery

使用非常简单的jQuery插件样板:

var _defaults = {
  foo: false
};

function Plugin( settings ) {
  this.opts = $.extend( {}, _defaults, settings );
}

我有一个doSomething方法只有在foo选项设置为true时才能成功运行,并且在某个时刻还有其他方法可能doSomething()我在if语句的位置上陷入了两难境地。首先我想:

Plugin.prototype = {
  doSomething: function() {
    // Do something that depends on foo
  },
  method: function() {
    ...
    if ( this.opts.foo ) { this.doSomething() }
  },
  method: function() {
    ...
    if ( this.opts.foo ) { this.doSomething() }
  }
};

但是为了干燥,我决定这样做:

Plugin.prototype = {
  doSomething: function() {
    if ( this.opts.foo ) {
      // Do something that depends on foo
    }
  },
  method: function() {
    ...
    this.doSomething();
  },
  method: function() {
    ...
    this.doSomething();
  }
};

现在,如果doSomethingfoo,则可以使用false运行该函数的方法,无论它是否为空。

所以我的问题是,什么是更好的方法?第二个是更短的,但它必须每次查找方法,即使它不一定只是为了运行一个空函数。那么第一个更有效率吗?

哦,是的,我知道这可能是微优化,人们会说不要担心,但我只是好奇......

1 个答案:

答案 0 :(得分:0)

调用函数的效率将低于第一种方法。

看看这里的测试:  http://geek.michaelgrace.org/2011/02/javascript-performance-hit-calling-function-vs-inline/

他们确认某些浏览器的函数调用速度最多可降低50%。你可以自己测试一下。