Javascript 将本地对象存储在全局对象中

Javascript 将本地对象存储在全局对象中,javascript,object,scope,Javascript,Object,Scope,这个函数生成新的对象——我们之前不知道——我想存储它们以备将来使用。这样行吗: var objs = {};// container (function doSth(){// might has to add new objects var ob1 = {id: 29938, name: 'name1'}; objs['ob1'] = ob1;// ??? objs['ob2'] = {id: 2000, name: 'name2'};// ??? })() // use th

这个函数生成新的对象——我们之前不知道——我想存储它们以备将来使用。这样行吗:

var objs = {};// container

(function doSth(){// might has to add new objects
  var ob1 = {id: 29938, name: 'name1'};
  objs['ob1'] = ob1;// ???
  objs['ob2'] = {id: 2000, name: 'name2'};// ???
})()

 // use the obj later on like 
 console.log(objs['ob1'].id); 
 console.log(objs['ob2'].name);
我在堆上创建了一个新对象,并将引用存储在全局对象中供以后使用。因为我存储了引用,所以假设没有垃圾收集,访问也正常

根据

…此算法将“不再需要对象”的定义减少为“对象没有其他对象引用它”。如果没有指向该对象的引用,则该对象被视为垃圾回收对象

因此,只要您有对这些对象的引用,它们就不会被垃圾收集。 例如:

  var o = { 
    a: {
      b: 2
    }
  }; // 2 objects are created. One is referenced by the other as one of its properties.
     // The other is referenced by virtue of being assigned to the 'o' variable.
     // Obviously, none can be garbage-collected
     // You can also free the memory by removing all references to that object, e.g.,
     o.a = null;  

当然任何可以访问的对象都不是垃圾,因此不会被收集。没有本地和全局对象。只有局部变量和全局变量。是的,很好。它会很好地工作。你在这里有完整的代码来演示它是否工作,你试过运行它来看看会发生什么吗?是的,它工作,但这还不够。我这样问是因为在irc javascript中,有些人似乎对我说它不好。