sfl*_*che 1 javascript ecmascript-6
我得到导入具有不可变的绑定.
我以为导入的对象是不可写的,但后来我尝试以下内容并且它工作得很好......
文件#1
export let creature = {
name: 'Oscar'
}
Run Code Online (Sandbox Code Playgroud)
文件#2
import { creature } from './file-1';
console.log(creature.name); // Oscar
creature.name = 'Winnie';
console.log(creature.name); // Winnie;
Run Code Online (Sandbox Code Playgroud)
假设#1
如果导入的对象是不可写的,对于上述情况,我应该可以说
creature.foo = 'bar';
Run Code Online (Sandbox Code Playgroud)
因为还没有creature
被叫的财产foo
但我不能说
creature.name = 'Winnie';
Run Code Online (Sandbox Code Playgroud)
因为已经存在name
属性creature
并且(参见假设#2)导入的对象是不可写的.
假设#2(或者我应该说先前的假设...)
导入的对象是不可写的.
那么导入的对象不是不可写的吗?
或者我不明白什么是不可写的意思?
进口几乎就像const
s*.该结合是不可变的,你可以不分配新的值给它,但如果该值是可变的,可以对其进行更新.这包括在对象的情况下添加,更新或删除属性.
或者我不明白什么是不可写的意思?
绑定可以是可写的和不可写的(只读).这仅仅意味着是否可以为其分配新值.
在谈论对象时,属性可以是可写的或不可写的(只读).有关完整的对象,它可能是最好使用条款"冻结","密封"和"非扩展"(?),要与保持一致Object.freeze
,Object.seal
和Object.preventExtensions
API的.
*:"几乎",因为导出这些绑定的模块实际上可以为它们分配新值.