coffeescript 的基本继承,child 覆盖未调用
basic inheritance with coffeescript, child override not called
我遇到了意外行为。我在 child class 中覆盖了一个函数,但是 parent class 中的函数仍在被调用。我做错了什么?
class MyClassA
myFnc: ->
debugger
@myFncTest()
myFncTest: ->
## this one is called eventhough it's defined in extended class
class MyClassB extends MyClassA
myFncTest: ->
debugger
inst = new MyClassB()
inst.myFnc()
编辑
我正在使用 Marionette 模块,它们包含在两个单独的文件 MyClassA 和 MyClassB 中
MyApp.module("MyModuleA", function(MyModule, MyApp, Backbone, Marionette, $, _)
class MyClassA
myFnc: ->
debugger
@myFncTest()
myFncTest: ->
## this one is called eventhough it's defined in extended class
MyApp.module("MyModuleB", function(MyModule, MyApp, Backbone, Marionette, $, _)
class MyClassB extends MyApp.MyModuleA.MyClassA
myFncTest: ->
debugger
inst = new MyClassB()
inst.myFnc()
如果我这样写:
class MyClassA
myFnc: ->
console.log 'myFnc'
@myFncTest()
myFncTest: ->
console.log 'hello from A'
## this one is called eventhough it's defined in extended class
class MyClassB extends MyClassA
myFncTest: ->
console.log 'hello from B'
inst = new MyClassB()
inst.myFnc()
和运行
➜ coffee test.coffee
myFnc
hello from B
我只有"Hello from B".
我猜你要么调用 super()
,要么它们是代码中的其他副作用
我使用的是最新版本的 coffeescript:
➜ coffee -v
CoffeeScript version 1.9.0
我遇到了意外行为。我在 child class 中覆盖了一个函数,但是 parent class 中的函数仍在被调用。我做错了什么?
class MyClassA
myFnc: ->
debugger
@myFncTest()
myFncTest: ->
## this one is called eventhough it's defined in extended class
class MyClassB extends MyClassA
myFncTest: ->
debugger
inst = new MyClassB()
inst.myFnc()
编辑
我正在使用 Marionette 模块,它们包含在两个单独的文件 MyClassA 和 MyClassB 中
MyApp.module("MyModuleA", function(MyModule, MyApp, Backbone, Marionette, $, _)
class MyClassA
myFnc: ->
debugger
@myFncTest()
myFncTest: ->
## this one is called eventhough it's defined in extended class
MyApp.module("MyModuleB", function(MyModule, MyApp, Backbone, Marionette, $, _)
class MyClassB extends MyApp.MyModuleA.MyClassA
myFncTest: ->
debugger
inst = new MyClassB()
inst.myFnc()
如果我这样写:
class MyClassA
myFnc: ->
console.log 'myFnc'
@myFncTest()
myFncTest: ->
console.log 'hello from A'
## this one is called eventhough it's defined in extended class
class MyClassB extends MyClassA
myFncTest: ->
console.log 'hello from B'
inst = new MyClassB()
inst.myFnc()
和运行
➜ coffee test.coffee
myFnc
hello from B
我只有"Hello from B".
我猜你要么调用 super()
,要么它们是代码中的其他副作用
我使用的是最新版本的 coffeescript:
➜ coffee -v
CoffeeScript version 1.9.0