log: (@title, @text, @delay, @class) -> -6ren">
gpt4 book ai didi

javascript - 在 Coffeescript 类的函数中指定第 n 个参数为 "super"

转载 作者:行者123 更新时间:2023-12-02 18:08:57 24 4
gpt4 key购买 nike

关于这个Message类,

class Message
constructor: (@type) ->

log: (@title, @text, @delay, @class) ->
$.growl
title: @title
text: '<br>' + @text
type: @type
delay: (@delay || 1500)
class: @class

class Success extends Message
class Error extends Message
class Info extends Message
log: ->
super 10000
class Warning extends Message

s = new Success 'success'
e = new Error 'danger'
i = new Info 'info'
w = new Warning 'warning'

对于四种不同类型的 Message,我想让扩展的 Info 始终传入 10000 的 @delay。如果这样是 log 的第一个参数,我只能说

log: ->
super 10000

但在这种情况下,它是第三个参数,我如何覆盖它,以便如果我说

i.log('hello')

它会创建一个咆哮,表示“你好”,但延迟 10 秒?

当然,我可以将 @delay 移动为第一个参数,但我计划对其他参数进行更多与此类似的覆盖。有办法做到这一点吗?

最佳答案

将您的 log 覆盖声明为 variadic function为了更容易地以数组形式访问参数列表,然后只需根据需要更改参数数组的倒数第二个值并将其返回到 super:

class Info extends Message
log: (args...) ->
args[args.length - 2] = 10000
super args...

演示:http://jsfiddle.net/ambiguous/eHR4n/

关于javascript - 在 Coffeescript 类的函数中指定第 n 个参数为 "super",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19868747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com