Javascript 属性未定义
我有以下代码:Javascript 属性未定义,javascript,jquery,Javascript,Jquery,我有以下代码: var my = { vars: { name: 'mojo' }, secondLevel: { vars: { name: my.vars.name } }, }; $("#myDiv").text(my.vars.name); 我得到这个错误: Uncaught TypeError: Cannot read property 'vars' of undefined 为什么我不能设置name:my.var
var my = {
vars: {
name: 'mojo'
},
secondLevel: {
vars: {
name: my.vars.name
}
},
};
$("#myDiv").text(my.vars.name);
我得到这个错误:
Uncaught TypeError: Cannot read property 'vars' of undefined
为什么我不能设置
name:my.vars.name
?您正在访问尚未创建的变量。考虑{}作为对象的构造函数,因此您正在尝试使用尚未创建的对象。你可以这样写:
var my = {
vars: {
name: 'mojo'
},
secondLevel: {
vars: {}
}
};
my.secondLevel.vars.name = my.vars.name;
$("#myDiv").text(my.vars.name);
var my = {
vars: {
name: 'mojo'
},
secondLevel: {
vars: {
name: my_vars_name
}
},
};
$("#myDiv").text(my_vars_name);
顺便问一下,你为什么想要那种“二级”的东西
您不能在名称中使用
但是如果你真的想让它工作的话,你就把它绕错了方向
应该是这样的:
var my = {
vars: {
name: 'mojo'
},
secondLevel: {
vars: {}
}
};
my.secondLevel.vars.name = my.vars.name;
$("#myDiv").text(my.vars.name);
var my = {
vars: {
name: 'mojo'
},
secondLevel: {
vars: {
name: my_vars_name
}
},
};
$("#myDiv").text(my_vars_name);
实际上,当js遇到您的定义时,您最初会遇到另一个错误
var my = {
vars: {
name: 'mojo'
},
secondLevel: {
vars: {
name: my.vars.name//This is wrong. Use this.vars.name
}
},
};
TypeError:my未定义
你没有注意到这个错误。您不能在我的申报中引用我的
my未定义,因此您无法引用它
使用此
而不是我的
name:this.vars.name
您不能像这样自引用对象文本:
name:my.vars.name
(使用时没有my
)-啊,好的,我明白了。嗯,我正在写一个巨大的JS文件(2000行),我想在每个“区域”中都有一个VARS的部分,所以VARS不会混淆和丢失概览。@ MojoDK,你可能想考虑闭包: