Inheritance “的范围是什么?”;这";在咖啡脚本课程中
我仍然对咖啡脚本和javascript继承中“this”的范围和上下文感到困惑。为什么这个(@)用于创建静态方法以及引用实例方法,比如@myStaticMethod和@move之间的区别,“这个”在这两种情况下代表什么 e、 gInheritance “的范围是什么?”;这";在咖啡脚本课程中,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
您必须调用
@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)