在Javascript中处理闭包时如何保持函数简短

时间:2017-03-23 21:00:05

标签: javascript closures code-readability

给出以下代码,它实现了一个闭包:

function scopeDef(){

  var privateField_1 = 1;
  .
  .
  .
  var privateField_8 = 8;

  return function someFunction() {
         /* Implementation takes 10 lines, and uses the private fields */
  }

}

我希望通过保持代码中的每个函数更短来维护代码可读性和约定,然后让我们说10个代码行。

我需要简单地将someFunction()的实施移到scopeDef()之外,并且仍然可以从someFunction()内访问私有字段。

有办法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用bind设置功能的上下文。您可以在闭包的上下文之外定义someFunction(),然后在闭包内返回someFunction.bind(this)

function publicMethod() { /* ... */ }

function closure() {
  /* ... */

  return publicMethod.bind(this)
}

例如

function logA() {
  console.log(this.a);
}

function closure() {
  this.a = 'context';
  return logA.bind(this);
}