有在JavaScript中沒有私有所以有在CoffeeScript中沒有私人,排序的。你可以讓事情在類級別這樣的私人:
class C
private_function = -> console.log('pancakes')
這private_function
僅會在C
可見。問題是private_function
只是一個函數,它不是C
實例上的方法。您可以解決通過使用Function.apply
或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/
或者,如果你不t需要@
在btnClick
是特別的東西,你可以直接使用該功能:
class FirstClass
btnClick = -> console.log('FirstClass')
constructor: ->
$('.btn').click btnClick
演示:http://jsfiddle.net/ambiguous/zGU7H/
btnClick = - >的console.log( '二等:',@)永遠不會執行 – Jonas
@Jonas:沒有沒有,你說你想要的東西, 「私有」 和我說的手段「只在FirstClass中可見」。在JavaScript中沒有public/private/protected,所以它也不在CoffeeScript中,最好在某些情況下可以模擬它。 –
我應該打擾所有的隱藏方法嗎?什麼是一般實踐?也許有「私人」方法的JS命名約定? – Jonas