javascript - 导入的对象是不可写的吗?

标签 javascript ecmascript-6

我知道导入具有不可变绑定(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(或者我应该说之前的假设...)

导入的对象是不可写的。

那么导入的对象不是不可写的吗?
还是我不明白不可写是什么意思?

最佳答案

导入几乎就像 consts *。 绑定(bind) 是不可变的,您不能为其分配新值,但如果该值是可变,您可以更新它。这包括在对象的情况下添加、更新或删除属性。

Or am I not understanding what non-writable means?

绑定(bind) 可以是可写的和不可写的(只读)。这只是意味着是否可以为其分配新值。

谈到对象时,属性 可以是可写的或不可写的(只读)。对于完整的对象,最好使用术语“卡住”“密封”“不可扩展”(?),与 Object.freeze 保持一致, Object.sealObject.preventExtensions API。


*:“几乎”,因为导出这些绑定(bind)的模块实际上可以为它们分配新值。

关于javascript - 导入的对象是不可写的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43599558/

相关文章:

javascript - 新手想要从网页发送电子邮件

angularjs - 将 (es6) firebase 3 npm 模块导入 Angular 时遇到问题

javascript - 将不同的 this 作用域绑定(bind)到 ES6 => 函数运算符

javascript - 不要在循环中创建函数 no-loop-func Axios Request async await

javascript - 在 ES6 中如何根据另一个对象的详细信息从一个对象获取对象详细信息

javascript - Java 在缓存中保存 JSP 页面

javascript - 你能在不影响历史的情况下使用散列导航吗?

javascript - 从 redux thunk 返回正确的数据类型

javascript - 三.Object3D.add : object not an instance of THREE. Object3D

javascript - react 和 react 路由器上下文未定义