1

是否有可能做这样的事情:

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 );
4

3 回答 3

1

执行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"
于 2013-03-22T12:04:39.773 回答
0

那是因为当你给 赋值时oHelper.ref,前一个值与符号分离(没有被破坏,因为oSettingsThing.data仍然指向它)。

考虑制作oHelper.ref一个对象本身:

var oHelper = {
    ref: { value: null }
}

var oSettingsThing = {
    data: oHelper.ref
}

// later
oHelper.ref.value = something_else;

oSettingsThing.data.value // something_else

如果你不能改变结构oSettingsThing

oSettingsThing.data = oHelper.ref = doDataStuff( oHelper.data );
于 2013-03-22T12:09:35.783 回答
0

null是一种引用,当它被分配到时oSettingsThing.data null被分配。

你可以做

var thing = Framework.create('module.thing', oHelper.ref );
于 2013-03-22T12:05:10.793 回答