【问题标题】:Generate same number each time a function is called每次调用函数时生成相同的数字
【发布时间】:2016-09-28 16:26:59
【问题描述】:

我有一个类(LiveScript)被实例化一次,但它的render 方法被调用了很多次。在render 方法中创建的每个对象都必须有一个唯一的键,该键在render 的所有调用中保持相同:

class Test
    ->
     console.log 'constructor, called only once'

    render: ->
        test = {key: 4124312}
        test1 = {key: 234897}
        test2 = {key: 87234}

这可行,但我宁愿生成它,而不是硬编码密钥。使用随机数将不起作用,因为这将在每次调用 render 时生成一个新密钥。在此类之外拥有一些键列表并弹出它们的项目也不起作用,因为render 中创建的对象的顺序可能会改变。知道是否以及如何生成密钥吗?

【问题讨论】:

  • 你试过在构造函数中用随机数生成密钥吗?
  • 这看起来是使用Symbols 的好案例——尤其是因为您似乎并不关心标识符值
  • 为什么不在ctor中生成数字?

标签: javascript livescript


【解决方案1】:

生成它们是一回事 - 听起来您需要一种方法来使用在执行上下文期间不会更改的键来持久保存唯一对象。这称为持久性。

在 JS 中,您可以使用对象字面量来存储对象,其中存储对象中每个条目的键是存储对象的唯一键:

{
    1234: { name: "test", key: 1234 },
    2345: { name: "test1", key: 2345 },
    3456: { name: "test2", key: 3456 }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    相关资源
    最近更新 更多