是否可以做这样的事情:
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
。< / p>
我不明白什么?
我正在使用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 );
答案 0 :(得分: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"
答案 1 :(得分:0)
null
是一种参考,当分配给oSettingsThing.data
null
时,会被分配。
你可以做到
var thing = Framework.create('module.thing', oHelper.ref );
答案 2 :(得分: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 );