如何确保正确更新和引用全局javascript对象?

如何确保正确更新和引用全局javascript对象?,javascript,angular,singleton,global-object,Javascript,Angular,Singleton,Global Object,我正在开发一个项目,其中我要求用初始值实例化一个全局对象,通过Angular服务进行更新,然后用更新后的值从其本机文件中再次引用 理想的工作流程如下所示: 用户输入输入并引发事件 服务对事件作出反应,并相应地更改全局对象值 用户导致事件更新信息 更新事件调用函数 函数引用具有更新值的全局对象,并相应地提交更改 当前,服务会适当地调用全局函数并注销对象,以确认值已更改。但是,当我尝试从更新后的对象的本机文件中引用该对象时,控制台将注销该对象,而不使用其新值 我尝试过使用简化js文件和Angular

我正在开发一个项目,其中我要求用初始值实例化一个全局对象,通过Angular服务进行更新,然后用更新后的值从其本机文件中再次引用

理想的工作流程如下所示:

  • 用户输入输入并引发事件
  • 服务对事件作出反应,并相应地更改全局对象值
  • 用户导致事件更新信息
  • 更新事件调用函数
  • 函数引用具有更新值的全局对象,并相应地提交更改
  • 当前,服务会适当地调用全局函数并注销对象,以确认值已更改。但是,当我尝试从更新后的对象的本机文件中引用该对象时,控制台将注销该对象,而不使用其新值

    我尝试过使用简化js文件和Angular服务更新这些值,但都会产生相同的问题。我还尝试使用各种语法引用对象,包括始终指向window.object或仅指向object。同样的结果依然存在

    我将在下面展示一些代码,以帮助更好地概述上下文

    应该引用更新值的函数称为“prepareExternalInterface”,并按如下方式嵌套:

    请注意:为了清晰起见,我删除了一些代码

    window.addEventListener('load',function(){
    函数准备外部Linterface(应用程序){
    //在app.ExternalInterface中注册函数以从拼图中调用它们
    app.ExternalInterface.updateModel=函数(){
    日志(“正在尝试更新模型:”)
    console.dir(window.nexus)
    let resizeModel=函数(高度、宽度、深度){
    拼图。程序。大小模型(高度、宽度、深度)
    }
    resizeModel(nexus.HeightShapeActor、nexus.WidthShapeActor、nexus.DepthShapeActor);
    let displayCurrentDoor=功能(门){
    v3d。拼图。程序。显示当前门(门)
    }
    显示currentDoor(nexus.currentDoor);
    让displayPrintPocket=功能(选定){
    如果(选中){v3d.puzzles.procedures.showPrintPocket()}否则{v3d.puzzles.procedures.hidePrintPocket()}
    }
    displayPrintPocket(nexus.drawingPocket);
    让DisplayRainshild=函数(已选定){
    如果(选中){v3d.puzzles.procedures.showRainSheild()}否则{v3d.puzzles.procedures.hideRainSheild()}
    }
    显示rainshild(nexus.rainshild);
    }
    
    }
    您需要使用REDUX或类似的数据存储。备选方案:Vue.js找到了一种跳过此问题的方法。它可以帮助您查看它们的操作。其他选项:使用Vue.util.extend(google it)等函数更新现有的主对象。