繁体   English   中英

如何从coffeescript中的类属性访问类参数?

[英]How to access class parameter from class property in coffeescript?

我有这样的基类:

class Base
  loginForm: {}

  constructor: (@data) ->
    @username = @data.username
    @password = @data.password

  log: ->
    console.log @loginForm

和子类,应如下所示:

class Child extends Base
  loginForm: 
    accountname: @username.split('/')[0]
    username: @username.split('/')[1]
    password: @password

child = new Child username: 1, password: 2

显然,如果我们执行child.log()我们将看到

Child.username is undefined

因此, 问题是我如何使用在其他属性定义(或类属性中的类参数)的构造函数中设置的属性?

上面的代码是我拥有的代码的简化版本,但它完全显示了我需要实现的功能(请不要建议我为基类构造函数中的每个@username.split('/')创建单独的属性)。

这是对应的jsFiddle

我知道我可以做类似的事情

class Base
  loginForm: {}

  constructor: (@data) ->
    @username = @data.username
    @password = @data.password
    @init()

  init: ->

class Child extends Base
  init: ->
    @loginForm =
      accountname: @username.split('/')[0]
      username: @username.split('/')[1]
      password: @password

但我不愿意(我不喜欢它的外观)。

您必须使用super来调用父构造函数:

class Base
  loginForm: {}

  constructor: (@data) ->
    @username = @data.username
    @password = @data.password

  log: ->
    console.log @loginForm

class Child extends Base
  constructor: (@data) ->
    super(@data)
  init: ->
    @loginForm =
      accountname: @username.split('/')[0]
      username: @username.split('/')[1]
      password: @password

当您创建Child的实例时,传递数据,以便父Base在其构造函数中得到它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM