繁体   English   中英

类方法作为回调的可读性:使用.bind还是包装在箭头函数中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM