是否可以做这样的事情:

var oHelper = {
  ref: null,
  data: {"key":"value"}
}
var oSettingsThing = {
  data: oHelper.ref,
  //....
}

//....some lines before or in other file loaded after
$(document).ready(function() {
  oHelper.ref = doDataStuff( oHelper.data );
  var thing = Framework.crate('module.thing', oSettingsThing );
}


我的目的是保持$(document).ready(function(){尽可能整洁,并在可能的情况下将两个块分隔在单独的文件中。

我认为就像在设置属性值的变量复制中那样,按引用进行复制将对我有所帮助,但是我错了,在Framework.crate('module.thing', oSettingsThing );上,oHelper.ref的值仍然是null

我不明白什么?

我正在使用ExtJs,它的对象结构非常复杂:

var oHelper = {
  ref: null,
  data: {"key":"value"}
}
//....
var oSettingsThing = {
GENERALS:{
    //..
    items: [
        {
            items: [
                {
                    //....
                    store: oHelper.ref,
                }
//....
Ext.onReady(function() {

  mc_documentos.stores.STATUS.ref = new Ext.data.SimpleStore(mc_documentos.stores.STATUS.data );
  //I was hopping to at this point have oSettingsThing.GENERALS...data !== null
  var generalsFilters= Ext.create('Ext.form.Panel', oSettingsThing.GENERALS );

最佳答案

执行时,oSettingsThing.data将指向null。它不会链接到oHelper.ref

现在,如果您这样做:

var oHelper = {
  ref: null
};
var oSettingsThing = {
  data: oHelper, // point to oHelper instead of oHelpder.ref
};

console.log(oSettingsThing.data.ref); // null
oHelper.ref = "somedata";
console.log(oSettingsThing.data.ref); // "somedata"

09-25 16:38