为什么这些js对象文字被冻结?

我遇到了一个问题,至少在 Firefox 和 Chrome 上,我创建的对象文字的属性被冻结。我包含了以下代码片段输出的屏幕截图,因为我很难相信这是真的。我一定是有什么原因导致了这个,或者我真的不懂 JavaScript。

let b = { foo: { bar: 2 }, baz: 9 };

console.log("b:", Object.isFrozen(b));
console.log("foo:", Object.isFrozen(b.foo));
console.log("foo.bar:", Object.isFrozen(b.foo.bar));
console.log("baz:", Object.isFrozen(b.foo.baz));

回答

并不是任何对象都被冻结了——它们不是。您所指的属性是基元,而不是对象。

原语是不可变的。为他们Object.isFrozen回报true

正如规范所说:

如果 Type(O) 不是 Object,则返回 true。


以上是为什么这些js对象文字被冻结?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>