封装Getters的方法

我正在使用node.js / express堆栈开发一个网站,我正在尝试开发对我来说很新的function样式。 express方法res.send需要将函数作为方法调用,因为它在本体中引用了this方法,但调用方法在函数式样中不起作用。

你可以把这个方法放在getter函数的后面,把它变成一个函数,但是我不知道除了代码复杂性之外,是否还有其他的缺点?

例:

 (function() { "use strict"; function Foo() { function bar() { console.log(this.x); } return { bar, get baz() { var s = this; return () => s.bar(); } } } var a = new Foo(); ax = 5; a.bar(); a.baz(); var b = a.bar; var c = a.baz; //b(); // throws an error because `this` is not defined c(); function wrapper(f) { f(); } //wrapper(a.bar); // throws an error wrapper(a.baz); })(); 

最终它取决于你的确切的使用情况,但添加包装函数是非常典型的JavaScript和节点,并不会增加任何缺点。 你可以修复调用wrapper(a.bar); // throws an error时看到的错误wrapper(a.bar); // throws an error wrapper(a.bar); // throws an error使用bind来 wrapper(a.bar); // throws an error ,如下所示:

wrapper(a.bar.bind(a));

调用bind将确保在稍后调用该函数时将其设置为适当。

这是一个演示: https : //jsfiddle.net/zuL9g98m/