JavaScript 中没有私有,所以 CoffeeScript 中也没有私有。您可以像这样在班级级别将事情设为私有:
class C
private_function = -> console.log('pancakes')
这private_function
只会在C
. 问题是它private_function
只是一个函数,它不是C
. 您可以使用Function.apply
or解决这个问题Function.call
:
class C
private_function = -> console.log('pancakes')
m: ->
private_function.call(@)
因此,在您的情况下,您可以执行以下操作:
class FirstClass
btnClick = -> console.log('FirstClass: ', @)
constructor: ->
$('.btn').click => btnClick.call(@)
class SecondClass extends FirstClass
btnClick = -> console.log('SecondClass: ', @)
演示:http: //jsfiddle.net/ambiguous/5v3sH/
或者,如果您不需要@
特别btnClick
做任何事情,您可以按原样使用该功能:
class FirstClass
btnClick = -> console.log('FirstClass')
constructor: ->
$('.btn').click btnClick
演示:http: //jsfiddle.net/ambiguous/zGU7H/