Javascript 使用ES6符号作为唯一ID是否是一种良好的做法?
由于Javascript 使用ES6符号作为唯一ID是否是一种良好的做法?,javascript,ecmascript-6,Javascript,Ecmascript 6,由于Symbol是唯一且不可变的数据类型,因此Symbol的常见用例是对象属性。但是,将其用作唯一id是否是一种良好的做法?例如: const list = [ {id: Symbol()}, {id: Symbol()} ] 这完全取决于你的需要。如果您只需要它们作为您自己的代码库中的标识符,那么它们很好,当然比生成随机ID要好 但是使用Symbol()的一个主要缺点是它们不可序列化。没有办法跨网络/进程共享Sy
Symbol
是唯一且不可变的数据类型,因此Symbol
的常见用例是对象属性。但是,将其用作唯一id是否是一种良好的做法?例如:
const list = [
{id: Symbol()},
{id: Symbol()}
]
这完全取决于你的需要。如果您只需要它们作为您自己的代码库中的标识符,那么它们很好,当然比生成随机ID要好 但是使用
Symbol()
的一个主要缺点是它们不可序列化。没有办法跨网络/进程共享Symbol()
的值或将其保存到磁盘/数据库
在大多数情况下,可能最好使用自动递增ID。这并不是它们的真正用途,您可以使用任何对象<代码>{}!={}@lyschooning
{}!={}
如果我们想维护一个不可变的对象,它将不起作用。@ChingTingWu:对象标识是不可变的。如果希望对象本身是不可变的,仍然可以冻结它们。