fox1955
V2EX  ›  问与答

[代码分享] 选择数组还是原型链?

  •  1
     
  •   fox1955 · Nov 11, 2018 · 1107 views
    This topic created in 2771 days ago, the information mentioned may be changed or developed.

    cmd-alive 核心实现分享

    接上篇: https://www.v2ex.com/t/506437

    背景

    在互动小说的阅读流程中,如果只支持选择分支 1,就前往分支 1,那未免就太单调了又不是 galgame。在当前分支路口,可以根据用户的过往选择来确定接下来的走向,具体的逻辑要交给作者去实现,框架只需提供能力即可。

    实现

    暴露一个对象 ctx 贯穿阅读流程。ctx.S 上挂载读者的所有输入。作者在取得需要的内容后进行逻辑处理。

    在阅读过程中,ctx 会变成这样:

    S4

    |

    S3

    |

    S2

    |

    S1 ----ctx------

    S1-S4 上挂着对应场景下的用户输入和其他数据。

    想当然的,ctx.S 是数组。ctx.S = [S1,S2,S3,S4]。但是,经常,作者在某场景下挂载一个数据,在以后的场景下需要访问这个数据。如果不需要得知在哪里挂载上的,那直接放在 ctx 本身就 ok。如果需要位置,那就放在 ctx.S 数组中。但是访问数据麻烦,ctx 臃肿。

    ctx.S 如果不用数组,可以用 * 原型链 * 来代替。S1, S2, S3, S4 变成了继承关系解决了上面的痛点。访问数据方便的同时,保留了位置信息。

    文件位置:lib/context.js

    repo: # https://www.v2ex.com/t/506437

    1 replies    2018-11-12 10:00:33 +08:00
    fox1955
        1
    fox1955  
    OP
       Nov 12, 2018 via Android
    没人恢复,好冷清
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3032 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 06:41 · PVG 14:41 · LAX 23:41 · JFK 02:41
    ♥ Do have faith in what you're doing.