阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

    教程列表

    数据库
    抓包专区
    测试专区

    CoffeeScript 命令模式

    命令模式

    问题

    你需要让另一个对象处理你自己的可执行的代码。

    解决方案

    使用Command pattern传递函数的引用。

    # Using a private variable to simulate external scripts or modules
    incrementers = (() ->
        privateVar = 0
    
        singleIncrementer = () ->
            privateVar += 1
    
        doubleIncrementer = () ->
            privateVar += 2
    
        commands =
            single: singleIncrementer
            double: doubleIncrementer
            value: -> privateVar
    )()
    
    class RunsAll
        constructor: (@commands...) ->
        run: -> command() for command in @commands
    
    runner = new RunsAll(incrementers.single, incrementers.double, incrementers.single, incrementers.double)
    runner.run()
    incrementers.value() # => 6
    

    讨论

    以函数作为一级的对象且从 Javascript 函数的变量范围中继承,CoffeeScript 使语言模式几乎看不出来。事实上,任何函数传递回调函数可以作为一个_命令_。

    jqXHR 对象返回 jQuery AJAX 方法使用此模式。

    jqxhr = $.ajax
        url: "/"
    
    logMessages = ""
    
    jqxhr.success -> logMessages += "Success!\n"
    jqxhr.error -> logMessages += "Error!\n"
    jqxhr.complete -> logMessages += "Completed!\n"
    
    # On a valid AJAX request:
    # logMessages == "Success!\nCompleted!\n"
    
    卖前端学习教程

    只需几十元,就能买到培训班的内部教程!开启高薪之路!

    零基础小白阿里P7的教程都有!

    同时长期收购所有培训班的前端教程

    目录
    目录