CoffeeScript类参数集语法

时间:2014-08-17 06:56:57

标签: coffeescript

我目前正在使用CoffeeScript,我遇到了一个问题,即如何以智能方式编写下面的代码。

class TestClass
    constructor : (name) ->
        @name = name if name?
    name : "Jack"
    sayHi : ->
        console.log "Hi #{@name}"

我知道constructor : (@name) ->可用于将参数设置为实例属性,但如果我想在缺少参数时使用类属性,则它不起作用。 constructor : (@name) ->声明this.name,即使参数为null

class TestClass
    constructor : (@name) ->
    name : "Jack"
    sayHi : ->
        console.log "Hi #{@name}"

foo = new TestClass()
foo.sayHi()
# "hi undefined" because foo.name exists with null value.

我当然已经尝试constructor : (@name?) ->,但这会触发语法错误。

有没有更好的方法,或者我必须编写代码@name = name if name?,这是迄今为止最好的方法?

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

default value用于constructor参数怎么样?

class TestClass
  constructor: (@name = "Jack") ->

答案 1 :(得分:0)

class TestClass
    _name = "Jack"
    constructor : (@name = _name) ->

tc = new TestClass
console.log tc

tc = new TestClass("Paul")
console.log tc

产:

{ name: 'Jack' }
{ name: 'Paul' }