Jon*_*nas 2 javascript private-members coffeescript
如何使方法"btnClick"私有?
class FirstClass
constructor: ->
$('.btn').click @btnClick
btnClick: =>
alert('Hi from the first class!')
class SecondClass extends FirstClass
btnClick: =>
super()
alert('Hi from the second class!')
@obj = new SecondClass
Run Code Online (Sandbox Code Playgroud)
mu *_*ort 15
在JavaScript中没有私有,所以在CoffeeScript中没有私有,有点像.您可以在类级别将事物设为私有,如下所示:
class C
private_function = -> console.log('pancakes')
Run Code Online (Sandbox Code Playgroud)
那private_function将只在内部可见C.问题是,这private_function只是一个函数,它不是实例的方法C.您可以使用Function.apply或解决此问题Function.call:
class C
private_function = -> console.log('pancakes')
m: ->
private_function.call(@)
Run Code Online (Sandbox Code Playgroud)
所以在你的情况下,你可以做这样的事情:
class FirstClass
btnClick = -> console.log('FirstClass: ', @)
constructor: ->
$('.btn').click => btnClick.call(@)
class SecondClass extends FirstClass
btnClick = -> console.log('SecondClass: ', @)
Run Code Online (Sandbox Code Playgroud)
演示:http://jsfiddle.net/ambiguous/5v3sH/
或者,如果你不需要@的btnClick是什么特别,你可以使用的功能,就是:
class FirstClass
btnClick = -> console.log('FirstClass')
constructor: ->
$('.btn').click btnClick
Run Code Online (Sandbox Code Playgroud)
演示:http://jsfiddle.net/ambiguous/zGU7H/
| 归档时间: |
|
| 查看次数: |
2837 次 |
| 最近记录: |