根据您的评论,问题主要是“构造函数知识是否必要?” 我感觉是
一个玩具示例将存储 部分
数据。在内存中的给定数据集上,当持久化时,我只能选择存储某些元素(出于效率或数据一致性的目的,例如,持久化后这些值本质上是无用的)。让我们进行一个会话,在该会话中存储用户名和用户单击帮助按钮的次数(因为缺少更好的示例)。当我在示例中坚持执行此操作时,点击次数没有用,因为我现在将其保存在内存中,并且下次加载数据时(下次用户登录或连接或进行其他操作),我将初始化从零开始的值(大概为0)。这个特殊的用例是构造函数逻辑的不错的选择。
Aahh,但您始终可以将其嵌入静态原型中:
Object.create({name:'Bob',clicks:0});当然可以。但是,如果一开始的值并不总是为0,而是需要计算的话,该怎么办?假设用户的年龄以秒为单位(假设我们存储了名称和DOB)。再次,很少使用的项目会持续存在,因为无论如何在检索时都需要重新计算它。那么,如何在静态原型中存储用户的年龄呢?显而易见的答案是构造函数/初始化逻辑。
还有更多场景,尽管我认为这个主意与jsoop或任何特定语言无关。在我看到计算机系统建模世界的方式中,实体创建 _逻辑_的必要性是固有的。有时,我们存储的项目将是简单的检索并注入到原型外壳之类的蓝图中,有时值是动态的,需要进行初始化。
更新
好的,我将尝试一个更真实的示例,为避免混淆,请假设我没有数据库,也不需要持久化任何数据。假设我要制作纸牌服务器。每个新游戏(自然)都是
Game原型的新实例。对我来说很明显,这里是它们的初始化逻辑(和很多逻辑):
例如,我将需要在每个游戏实例上不仅需要一个静态/硬编码的牌组,还需要一个随机洗牌的牌组。如果是静态的,则用户每次都会玩相同的游戏,这显然不好。
如果玩家用完了,我可能还必须启动一个计时器来完成游戏。再说一遍,这不是静态的,因为我的游戏有一些要求:秒数与所连接的玩家迄今为止赢得的游戏数成反比(同样,没有保存的信息,仅此连接有多少个信息)
,并与改组的难度成比例(有一种算法,根据改组结果可以确定游戏的难度)。
如何使用静态方法
Object.create()呢?



