我不确定这是否可行,如何给予this article我很好奇如何使用如下函数:
export default () => {
let _foo = '';
return {
set foo(x) {
if (x === undefined) {
_foo = this.someFN();
} else {
_foo = x;
}
},
get foo() {
return _foo;
},
someFN() {
return 'hello'
}
}
}
在文章中有一个概念,即工厂功能中没有“参考”。如果是这种情况,您如何将多个工厂功能链接在一起?
例如,我正在研究一个概念,我已经编写了一个工厂函数,该函数具有允许您进行链接的方法,例如:
const fooBar = FooBar();
fooBar.someMethod().someOtherMethod();
这是有效的,因为我返回this
。 您是否要避免在工厂功能中使用“this”?和**工厂功能是否仅包含一种方法?
因此,就我上面的例子而言,将someFN()
放在那里是不对的?
答案 0 :(得分:1)
没有严格的规则,你不能在工厂职能中使用this
。但是如果你想避免它,只需记住变量中的对象并使用它(这也避免了使用错误this
调用函数的问题):
export default () => {
let _foo = '';
let obj = {
set foo(x) {
if (x === undefined) {
_foo = this.someFN();
} else {
_foo = x;
}
},
get foo() {
return _foo;
},
someFN() {
return 'hello'
},
chainableMethod1() {
// Do something, then
return obj;
},
chainableMethod2() {
// Do something else, then
return obj;
}
};
return obj;
};
用法:
theModule.chainableMethod1().chainableMethod2();