我认为导入具有不可变的绑定。
我以为导入的对象是不可写的,但后来我尝试了以下内容,它运行得很好......
档案#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';
因为name
上已经存在creature
属性(参见假设#2)
导入的对象是不可写的。
假设#2 (或者我应该说先前的假设......)
导入的对象不可写。
那么导入的对象是不可写的吗? 或者我不明白什么是不可写的意思?
答案 0 :(得分:6)
进口几乎与const
s *相同。 绑定是不可变的,您不能为其分配新值,但如果值为 mutable ,则可以更新它。这包括在对象的情况下添加,更新或删除属性。
或者我不明白不可写的意思是什么?
Bindings 可以是可写的,也是不可写的(只读)。这仅仅意味着是否可以为其分配新值。
在谈论对象时,属性可以是可写的或不可写的(只读)。对于完整的对象,最好使用术语"冻结" ,"密封" 和&#34 ;不可扩展的" (?),与Object.freeze
,Object.seal
和Object.preventExtensions
API保持一致。
*:"几乎" ,因为导出这些绑定的模块实际上可以为它们分配新值。