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

2018-11-11 13:34:50 +08:00
 fox1955

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

662 次点击
所在节点    问与答
1 条回复
fox1955
2018-11-12 10:00:33 +08:00
没人恢复,好冷清

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/506670

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX