首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改ESM导出绑定

更改ESM导出绑定
EN

Stack Overflow用户
提问于 2022-08-23 15:26:50
回答 1查看 51关注 0票数 0

我想知道解构时ES6模块的导出绑定是如何工作的。我正在导出一个对象(thing)作为一个命名的导出--但也是它的一个属性(foo),稍后我将对其进行更新。

当我导入对象并引用它的支柱时,这个更新是有效的,但是当我直接导入foo时就不行了,如下所示。我猜export const...创建了一个新的、不可变的绑定,但是在导出时有什么方法可以保留对原始对象的引用呢?

代码语言:javascript
复制
// module: 'thing.js'

let thing = {
  foo: (x) => console.log(x)
};

const init = () => {
  thing.foo = (x) => console.log("updated");
};

export { init, thing };
export const { foo } = thing;
代码语言:javascript
复制
// index.js

import { foo, thing, init } from "./thing";

init();

foo("test");        // does not work
thing.foo("test");  // update is reflected, here

码箱

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-23 16:20:10

出口/进口没有问题。

参见此示例:

代码语言:javascript
复制
let thing = {
  foo: (x) => console.log(x)
};

const init = () => {
  thing.foo = (x) => console.log("updated");
};

const foo = thing.foo;

init();
foo("test"); //test
thing.foo("test"); //updated

变量foo和字段thing.foo在init函数中重写thing.foo后包含不同的函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73461362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档