首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
华为云
V2EX  ›  问与答

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

  •  1
     
  •   fox1955 · 8 天前 · 186 次点击

    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 回复  |  直到 2018-11-12 10:00:33 +08:00
        1
    fox1955   7 天前 via Android
    没人恢复,好冷清
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   787 人在线   最高记录 3821   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 17ms · UTC 19:24 · PVG 03:24 · LAX 11:24 · JFK 14:24
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1