我知道导入具有不可变绑定(bind)。
我以为导入的对象是不可写的,但后来我尝试了下面的方法,它工作得很好......
文件#1
export let creature = {
name: 'Oscar'
}
文件#2
import { creature } from './file-1';
console.log(creature.name); // Oscar
creature.name = 'Winnie';
console.log(creature.name); // Winnie;
假设 #1
如果导入的对象是不可写的,对于上述情况我应该可以说
creature.foo = 'bar';
因为 creature
上还没有名为 foo
的属性
但我应该不能够说
creature.name = 'Winnie';
因为 creature
上已经有一个 name
属性并且(参见假设 #2)
导入的对象是不可写的。
假设#2(或者我应该说之前的假设...)
导入的对象是不可写的。
那么导入的对象不是不可写的吗?
还是我不明白不可写是什么意思?
最佳答案
导入几乎就像 const
s *。 绑定(bind) 是不可变的,您不能为其分配新值,但如果该值是可变,您可以更新它。这包括在对象的情况下添加、更新或删除属性。
Or am I not understanding what non-writable means?
绑定(bind) 可以是可写的和不可写的(只读)。这只是意味着是否可以为其分配新值。
谈到对象时,属性 可以是可写的或不可写的(只读)。对于完整的对象,最好使用术语“卡住”、“密封” 和“不可扩展”(?),与 Object.freeze
保持一致, Object.seal
和 Object.preventExtensions
API。
*:“几乎”,因为导出这些绑定(bind)的模块实际上可以为它们分配新值。
关于javascript - 导入的对象是不可写的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43599558/