我有这段代码:
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
?
答案 0 :(得分:3)
您正在访问尚未创建的变量。将{}视为Object的构造函数,因此您尝试使用尚未创建的对象。你可以这样写:
var my = {
vars: {
name: 'mojo'
},
secondLevel: {
vars: {}
}
};
my.secondLevel.vars.name = my.vars.name;
$("#myDiv").text(my.vars.name);
顺便说一句,为什么你想要那个"第二级"事?
答案 1 :(得分:0)
<强> Fiddle 强>
您不能在名称中使用.
。
但如果您确实希望它能够发挥作用,那么您也可以采用错误的方式。
应该是这样的:
var my = {
vars: {
name: 'mojo'
},
secondLevel: {
vars: {
name: my_vars_name
}
},
};
$("#myDiv").text(my_vars_name);
答案 2 :(得分:0)
实际上,当js遇到你的定义时,你最初会遇到另一个错误。
var my = {
vars: {
name: 'mojo'
},
secondLevel: {
vars: {
name: my.vars.name//This is wrong. Use this.vars.name
}
},
};
TypeError:我未定义
你没有注意到这个错误。您无法在我的声明中引用my
。
因为这个原因我未定义,所以你不能引用它。
使用this
代替我的
name:this.vars.name