给出以下代码,它实现了一个闭包:
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()
内访问私有字段。
有办法吗?
答案 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);
}