gpt4 book ai didi

JavaScript 和 ES6, "global"变量

转载 作者:IT王子 更新时间:2023-10-29 03:20:03 26 4
gpt4 key购买 nike

3 年来,我一直在使用 JavaScript 的小片段,但现在我正在构建一个 React 应用程序,并且我正在深入研究它。有一个基本的东西我不明白。 React 使用 Dispatcher 和 Stores 来构建它的 Flux 模式,我没有得到的是这个 Dispatcher 在所有应用程序中都是可见的,因为 Actions 使用 Dispatcher 来调度 Action 并且 Stores 注册到 Dispatcher 以获得通知(所以它不是每次都是新的 Dispatcher)。那么,我怎样才能实现这个“全局”范围或它所谓的任何东西呢?如何使用 ES6 类(模块)实现这一点?

由于我缺乏真正的 JavaScript 编程经验,这个问题可能不清楚,我希望通过大量社区评论我能够解决这个问题。

最佳答案

无论您身在何处,您始终可以将变量分配给 window.MyClass = whatever(global.MyClass for nodejs),并从任何其他文件中访问这些值你的申请。不过,这并不总是在您的应用程序中全局共享数据的最佳方式。 nodejs 中的模块加载器(或 ES6 中的 AMD)获取你导出的任何内容并缓存它。假设您有一个文件,例如:

MyModule.js:

class MyClass {
constructor() {
this.someData = 55;
}
}

export default (new MyClass);

现在每当我们从其他地方需要这个文件时,我们总是得到 MyClass 的相同实例。这意味着:

文件1.js:

import MyClass from './MyModule'
MyClass.someData = 100;

文件2.js:

import MyClass from './MyModule'
console.log(MyClass.someData);

这称为单例模式,我们在整个应用程序中传递您的类的一个公共(public)实例。因此,以这种方式,我们能够从不同的文件访问相同的 MyClass 实例,而不会污染全局范围(我们避免对 global.MyClass 进行分配,但完成相同的功能)。

关于JavaScript 和 ES6, "global"变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33875322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com