gpt4 book ai didi

javascript - 类方法的可读性作为回调 : with . 绑定(bind)或包装在箭头函数中?

转载 作者:行者123 更新时间:2023-11-30 09:41:44 26 4
gpt4 key购买 nike

假设我想分配一个类方法作为回调,哪个更好?我所说的更好,是指风格和可读性。

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))

我看到了包装在函数中的惩罚,主要是内存,假设编译器没有 trim 调用。

最佳答案

风格和可读性是主观的。

箭头函数可以被认为是一种更好的做法,因为参数和参数是显式的(如果方法声明很远则更重要)。 bind 可以被认为更易于维护,因为您在添加/删除参数时不需要触摸它。但是,您可以使用箭头函数和 rest/spread 语法实现相同的目的:

theirPromise((...args) => this.myHandler_(...args));

现在唯一的区别是 bind 更短,创建一个具有正确 .length 的函数,评估 this.myHandler_/ this 立即引用并且 some other peanuts .

关于javascript - 类方法的可读性作为回调 : with . 绑定(bind)或包装在箭头函数中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40856168/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com