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

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

  •  1
     
  •   fox1955 · 2018-11-11 13:34:50 +08:00 · 661 次点击
    这是一个创建于 1986 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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
    fox1955
        1
    fox1955  
    OP
       2018-11-12 10:00:33 +08:00 via Android
    没人恢复,好冷清
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5209 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 08:46 · PVG 16:46 · LAX 01:46 · JFK 04:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.