gpt4 book ai didi

CoffeeScript,何时使用粗箭头 (=>) 覆盖箭头 (->),反之亦然

转载 作者:行者123 更新时间:2023-12-03 04:29:51 25 4
gpt4 key购买 nike

在 CoffeeScript 中构建类时,是否应使用 =>(“粗箭头”)运算符定义所有实例方法,并使用 ->< 定义所有静态方法 运算符?

最佳答案

不,这不是我会使用的规则。

我在定义方法时发现粗箭头的主要用例是当您想要使用方法作为回调并且该方法引用实例字段时:

class A
constructor: (@msg) ->
thin: -> alert @msg
fat: => alert @msg

x = new A("yo")
x.thin() #alerts "yo"
x.fat() #alerts "yo"

fn = (callback) -> callback()

fn(x.thin) #alerts "undefined"
fn(x.fat) #alerts "yo"
fn(-> x.thin()) #alerts "yo"

如您所见,如果不使用粗箭头,则在将实例方法的引用作为回调传递时可能会遇到问题。这是因为粗箭头将对象的实例绑定(bind)到 this 而细箭头则不然,因此如上所述作为回调调用的细箭头方法无法访问实例的字段,例如 @msg 或调用其他实例方法。最后一行有一个针对使用细箭头的情况的解决方法。

关于CoffeeScript,何时使用粗箭头 (=>) 覆盖箭头 (->),反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8965855/

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