JavaScript中的元组/记录



我指的是这个链接:Future Javascript:Records and Tuples,我想知道,这些背后的原因是什么?

我们仍然可以将Object.freeze与数组和对象一起使用来实现这一点。我唯一能想到的理由是按值进行比较。因此,这将允许我们在Set中使用类似对象的复杂结构(记录(作为密钥,并且我们可以轻松地获取它们。但是,这看起来足够大,有理由在一种语言中添加新的数据类型吗?

Object.freeze仅在对象的第一级(条目/属性(保护写入访问。嵌套深度超过1的任何结构都是可写的。因此,冻结的对象永远不会被深度冻结

为了实现后者,必须编写自己的递归deepFreeze函数。

相反,未来基元RecordTuple的值是真正/完全不可变的。

const wellTempered = {
foo: {
bar: 'baz',
biz: {
buzz: 'booz',
},
},
safe: 'protected',
};
const frozen = Object.freeze(wellTempered);
console.log(
'(wellTempered === frozen) ?..',
(wellTempered === frozen),
);
// - level 1 is frozen, thus not writable.
// - writing attempts will fail silently
//   in non strict mode.
frozen.safe = 'vulnerable';
// - `freeze` doesn't freeze deeply.
//
// - nested levels deeper than 1
//   are still writable.
frozen.foo.bar = "fooled";
frozen.foo.biz.buzz = "doomed";
console.log({
wellTempered,
frozen,
});
.as-console-wrapper { min-height: 100%!important; top: 0; }

最新更新