programing

JavaScript 및 ES6, "글로벌" 변수

css3 2023. 3. 31. 22:35

JavaScript 및 ES6, "글로벌" 변수

저는 3년 동안 JavaScript의 작은 조각으로 작업해 왔지만, 지금은 React 어플리케이션을 만들고 있습니다.저는 기본적인 이해가 안 되는 것이 있습니다.React는 Dispatcher와 Stores를 사용하여 플럭스 패턴을 구축합니다.Actions는 디스패처를 사용하여 액션을 디스패처에 보내고 Stores는 디스패처에 등록하여 알림을 받기 때문에 이 디스패처는 매번 새로운 디스패처가 아닙니다.그렇다면 어떻게 하면 이 '글로벌' 범위를 달성할 수 있을까요?ES6 클래스(모듈)를 사용하여 이를 실현하려면 어떻게 해야 합니까?

이 질문은 실제 JavaScript를 프로그래밍한 경험이 부족하기 때문에 불분명할 수 있습니다.커뮤니티 코멘트를 많이 받아 정리할 수 있으면 좋겠습니다.

언제든지 변수를 할당할 수 있습니다.window.MyClass = whatever(global.MyClassnodejs)를 사용하여 어플리케이션 내의 다른 파일에서 이러한 값에 액세스할 수 있습니다.그러나 애플리케이션 내에서 데이터를 글로벌하게 공유하는 것이 항상 최선의 방법은 아닙니다.nodejs의 모듈로더(또는 ES6의 AMD)는 내보내는 모든 것을 가져와 캐시합니다.다음과 같은 파일이 있다고 가정합니다.

MyModule.js:

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

export default (new MyClass);

이 파일이 다른 곳에서 필요할 때마다 항상 동일한 인스턴스가 제공됩니다.MyClass이것은 다음을 의미합니다.

file1.displays:

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

file2.filename:

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

이것은 싱글톤 패턴이라고 불리며, 이 패턴에서는 어플리케이션 전체에 걸쳐 클래스의 공통 인스턴스 하나를 전달합니다.따라서 이 방법으로 동일한 인스턴스에서 액세스 할 수 있습니다.MyClass글로벌 스코프를 오염시키지 않고 다른 파일로부터 모든 것을 입수할 수 있습니다(할당하지 않습니다).global.MyClass같은 기능을 실현합니다).

당신이 찾고 있는 것은 싱글톤을 만드는 것입니다.http://amanvirk.me/singleton-classes-in-es6/ 에서.

let instance = null;
export default class Cache{
  constructor() {
    if (!instance) { instance = this; }
    this.time = new Date()

    return instance;
  }
}

이걸 테스트해봤는데 효과가 있어요.this.time = new Date()를 this.singletonFunction = function(){}로 바꾸면 됩니다.사용하려는 위치에서 가져오기를 수행합니다.

let aSingleton = (new importName()).singletonFunction;

언급URL : https://stackoverflow.com/questions/33875322/javascript-and-es6-global-variables