Classes within Coffeescript 'Namespace'

后端 未结 3 2109
天命终不由人
天命终不由人 2020-12-14 10:33

I found this snippet on the Coffeescript FAQ for creating simplistic namespaces ..

# Code:
#
namespace = (target, name, block) ->
  [target, name, block]          


        
3条回答
  •  情书的邮戳
    2020-12-14 11:16

    The trick is to create the class first

    class MyFirstClass
      myFunc: () ->
        console.log 'works'
    
    class MySecondClass
      constructor: (@options = {}) ->
      myFunc: () ->
        console.log 'works too'
        console.log @options
    

    Then somewhere near the end of the file export all the classes than need to be exposed.

    namespace "Project.Something", (exports) ->
      exports.MyFirstClass = MyFirstClass
      exports.MySecondClass = MySecondClass
    

    Later on you can use the classes as so:

    var firstClass = new Project.Something.MyFirstClass()
    firstClass.myFunc()
    
    var secondClass = new Project.Something.MySecondClass 
      someVar: 'Hello World!'
    
    secondClass.myFunc()
    

提交回复
热议问题