Inheritance “的范围是什么?”;这";在咖啡脚本课程中

Inheritance “的范围是什么?”;这";在咖啡脚本课程中,inheritance,coffeescript,Inheritance,Coffeescript,我仍然对咖啡脚本和javascript继承中“this”的范围和上下文感到困惑。为什么这个(@)用于创建静态方法以及引用实例方法,比如@myStaticMethod和@move之间的区别,“这个”在这两种情况下代表什么 e、 g 您必须调用@run(),因为run()是本地函数调用 class Dog extends Animal sprint: () -> run = (x) -> alert x run(4) 另一方面,@run()是一个th

我仍然对咖啡脚本和javascript继承中“this”的范围和上下文感到困惑。为什么这个(@)用于创建静态方法以及引用实例方法,比如@myStaticMethod和@move之间的区别,“这个”在这两种情况下代表什么

e、 g


您必须调用
@run()
,因为
run()
是本地函数调用

class Dog extends Animal

sprint: () ->
    run = (x) ->
        alert x

    run(4)
另一方面,
@run()
是一个
this.run()
JavaScript模拟。当您在示例中使用继承时,方法
run
Animal
扩展到
Dog
,并因此移动到
Dog
的原型。因此,您应该从当前对象调用
run

为什么这个(@)用于创建静态方法和引用 实例方法

@
这两种情况下的符号不同。在您的示例中,如果您想调用静态方法,您应该在类内部和外部编写
Animal.myStaticMethod()
。但当您需要在类内调用实例方法时,您可以使用
@
,就像JS中的
this
一样


请看中的小示例。正如您在右侧看到的,
staticMethod
没有添加到原型中,因此它不是实例方法,在这种情况下,
@
@instanceMethod()

中的
@
没有任何共同之处。谢谢您的回答,只是编辑了这个问题,以便更关注“this”上下文中的问题
class Dog extends Animal

sprint: () ->
    run = (x) ->
        alert x

    run(4)