[英]Readability for class method as callback: with .bind or wrap in an arrow function?
可以说我想将一个类方法分配为回调,哪个更好? 更好的是,我真的是指样式和可读性。
const Foo = class {
/** @param {!Promise} */
optionOne(theirPromise) {
theirPromise(this.myHandler_.bind(this));
}
/** @param {!Promise} */
optionTwo(theirPromise) {
theirPromise(() => this.myHandler_());
}
/** @private */
myHandler_() {
// Do something classy
}
};
在这种情况下,我阅读了箭头函数调用,使它更清晰,但是,如果回调中有一堆参数,它将开始变得愚蠢:
addCallback((a, b, c, d, e, f) => this.myHandler_(a, b, c, d, e, f))
我看到包装在函数(主要是内存)中的代价是,假设编译器不会减少调用。
样式和可读性是主观的。
箭头函数可以认为是更好的做法,因为参数和参数是显式的(如果方法声明很远,则更重要)。 bind
可能被认为更易于维护,因为在添加/删除参数时无需触摸bind
。 但是,您可以使用箭头功能和rest / spread语法实现相同的目的:
theirPromise((...args) => this.myHandler_(...args));
现在唯一的区别是bind
更短,创建具有正确.length
的函数,立即评估this.myHandler_
/ this
引用以及其他一些花生 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.