javascript - 导出一个 javascript 对象然后修改该导出文件中的该对象是否也会对导出的实例进行修改?

标签 javascript node.js typescript electron

我有一个带有以下代码的 typescript 文件 main.dev.ts:
主要开发者.ts

class Main {
  mainWindow: BrowserWindow | null = null;

  public getMainWindow(): BrowserWindow {
    return this.mainWindow!
  }

  public init() {
    app.on('ready', this.createWindow);
  }

  private async createWindow() {
    this.mainWindow = new BrowserWindow({
      show: false,
      width: 1324,
      height: 728,
      backgroundColor: "#f0f2f5",
      webPreferences: {
        nodeIntegration: true,
        enableRemoteModule: true
      }
    });

    this.mainWindow.loadURL(`file://${__dirname}/app.html`);

    this.mainWindow.once('ready-to-show', () => {
      setTimeout(() => {
        this.mainWindow?.show();
        this.mainWindow?.focus();
      }, 150);
    });
  }

}


function createMainApp():Main{
  const mainApp = new Main() ;
  mainApp.init()
}

export const mainApp = createMainApp()

我有另一个 ts 文件导入这个导出的 mainApp目的。
另一个文件.ts
import {mainApp} from 'main.dev'

function myFun(){
  const window = mainApp.window
  //window is "null" even though the main window is already 
}
函数myFun在创建主窗口后(在同一个主进程中)被调用。这里的窗口对象是null .
我想当我们在第一个文件中导出对象时,导出对象的所有状态变化都会被保留。我在这里想念什么?

最佳答案

您的问题 :是的,导入的模块在文件上使用相同的实例。
给你的错误 : 问题是因为您初始化应用程序的方式,而不是因为导入的实例,createWindow将使用 this 执行全局范围的(也许 window.mainWindow 是你需要的)。

  • 确保事件 ready将被调用,并且即使应用程序已经“准备好”,也将始终被触发。
  • createWindow函数应在 this 下执行主实例:
  • public init() {
        app.on('ready', this.createWindow.bind(this));
    }
    

    关于javascript - 导出一个 javascript 对象然后修改该导出文件中的该对象是否也会对导出的实例进行修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65592642/

    相关文章:

    javascript - 为什么点击事件在这里立即注册?

    javascript - 如何在 ejs 中发布表单标签操作值?

    javascript - 在 React-router Link 中将对象作为 prop 传递

    angular - 属性类型 'responseType' 不兼容

    javascript - 第二次单击后触发 knockout 单击绑定(bind)

    javascript - 使用 JS 验证 HTML 表单中的多个字段

    javascript - HTML5 游戏 Phaser.io 让武器向 Sprite 方向开火

    node.js - 使用 mongoose 更新 mongodb 中的第二级数组返回意外标记 "."

    node.js - 清除 Node 调试器中的所有断点

    javascript - Angular2订阅了解箭头功能