我目前正在使用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?
,这是迄今为止最好的方法?
感谢您的帮助
答案 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' }