Coffeescript 类命名空间方法
Coffeescript class namespaced methods
class SocialStudies
constructor : (@val1,@val2) ->
console.log 'constructed '+@val1+' | '+@val2
doAlerts :
firstAlert : =>
alert @val1
secondAlert : =>
alert @val2
secondPeriod = new SocialStudies 'git to class!', 'no recess for you!'
secondPeriod.doAlerts.firstAlert() // error this.val1 is not defined
希望你明白了。我想从方法内的方法集访问@val1
,而胖箭头什么也没做!有谁知道该怎么做?
class SocialStudies
constructor : (@val1,@val2) ->
console.log 'constructed '+@val1+' | '+@val2
@doAlerts =
firstAlert : =>
alert @val1
secondAlert : =>
alert @val2
当然,你也可以这样做:
class SocialStudies
constructor: (@val1, @val2) ->
@doAlerts = firstAlert: @firstAlert, secondAlert: @secondAlert
firstAlert: =>
alert @val1
secondAlert: =>
alert @val2
这在其他方面等同于 Keith Nicholas 的答案,但允许在继承类的方法中使用 super 关键字,因此您可以像这样做:
class AntiSocialStudies extends SocialStudies
secondAlert: =>
@val2 += ' no solitary drinking until 3PM.'
super
secondPeriod = new AntiSocialStudies 'git to class!', 'no recess for you!'
secondPeriod.doAlerts.secondAlert()
相关文章:
- 为什么不推荐使用“with”?是否有更好或其他方法可以“下降”到对象的命名空间
- 处理此命名空间 JavaScript 结构的最佳方法是什么?
- jQuery命名空间声明和模块化方法
- 将参数传递给回调函数而不更改方法(Siesta Testing命名空间)
- 向对象原型添加命名空间方法
- Javascript命名空间 - 是这种特殊方法的良好实践
- 为命名空间上公开的方法创建类型定义
- Coffeescript 类命名空间方法
- 要打包的命名空间流星方法
- 使用 Javascript 命名空间/singleton 将不接受传递给成员方法的参数
- jQuery - 方法链的插件和命名空间问题
- OOP,命名空间的顶级方法内部的私有函数
- 什么'这是向全局命名空间公开requireJS模块的正确方法
- javascript jsdoc命名空间类静态方法
- 如何链接具有命名空间的方法
- 什么's命名空间以及如何从命名空间导出方法
- 如何在维护命名空间的同时创建类似jQuery的方法链接
- 在单独的窗口命名空间中加载和访问Js的方法
- 这些命名空间方法之间的区别是什么?
- 是否有一种方法可以仅解除非命名空间事件的绑定