簡體   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