Class 等待coffeescript类中另一个对象的属性值

Class 等待coffeescript类中另一个对象的属性值,class,constructor,coffeescript,Class,Constructor,Coffeescript,我想知道是否有一种方法可以传递我在构造函数之后收到的值,并将其放入构造函数选项中。问题是,我还需要传递构造函数中的一个值,因此它具有来自双方的依赖关系 class Test constructor: (@opt={}) -> @opt.width = obj.width @opt.color = "#f45 # obj.width is undefined obj = new Obj width: 200 color: @op

我想知道是否有一种方法可以传递我在构造函数之后收到的值,并将其放入构造函数选项中。问题是,我还需要传递构造函数中的一个值,因此它具有来自双方的依赖关系

class Test
  constructor: (@opt={}) ->
    @opt.width = obj.width
    @opt.color = "#f45

    # obj.width is undefined

    obj = new Obj
      width: 200
      color: @opt.color
或者我的真实例子

class Button extends Layer
  constructor: (@opt={}) ->
    super _.defaults @opt,
      width: @btnText.width
      type: "default"

    # btnText.width is undefined

    @btnText = new Text
      width: 200
      type: @opt.type
如何解决此问题并消除未定义的值?也许我可以用一些等待和承诺?不知道:-)


提前谢谢你

我不确定我是否理解你的问题。您正在将
opt
路由到super-ctor中,并且还有一个附加对象,该附加对象具有两个属性(
width
type
),其中
width
被初始化为未定义状态,即
@btnText。尚未定义width
。但随后,您将初始化对象
btnText
,并为其指定一个静态值。为什么不简单地初始化您给super-ctor的对象,或者简单地为第一次出现的宽度赋值呢。像你以后做的200或0?我认为承诺不适合这样做。如果通过承诺异步填充某些值,则访问该值的所有代码必须能够处理该值未定义或承诺未解析的情况。为什么不在对super的调用中声明宽度,并在下面的
@btnText
构造函数中重用它呢?