[英]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.