在Javascript中定义嵌套对象属性
我需要向服务器发送一个JSON对象,该服务器要求 是嵌套的。例如,数据对象可能嵌套在两层深的位置。但是,不能简单地直接声明对象:在Javascript中定义嵌套对象属性,javascript,jquery,object,Javascript,Jquery,Object,我需要向服务器发送一个JSON对象,该服务器要求 是嵌套的。例如,数据对象可能嵌套在两层深的位置。但是,不能简单地直接声明对象: var foo = {}; foo.bar.bartwo = "data"; //Uncaught TypeError 我目前正试图通过手动创建嵌套对象层来绕过此问题 var foo = {}; foo.bar = {}; foo.bar.bartwo = "data"; //Successful 但是,如果对象需要多个嵌套级别,这可能会很快失控 Javascr
var foo = {};
foo.bar.bartwo = "data"; //Uncaught TypeError
我目前正试图通过手动创建嵌套对象层来绕过此问题
var foo = {};
foo.bar = {};
foo.bar.bartwo = "data"; //Successful
但是,如果对象需要多个嵌套级别,这可能会很快失控
Javascript或Jquery中是否有更好的方法来处理此问题(仅通过第二个代码示例无法解决此问题)
澄清:解决方案应该能够允许直接访问嵌套属性,而无需创建所有中间属性 不定义嵌套对象,即foo.bar={}; 不能使用或为其赋值 必须首先定义javascript对象才能使用它
否则,它将给您“未定义”错误,即foo.bar未定义,而不定义嵌套对象,即foo.bar={}; 不能使用或为其赋值 必须首先定义javascript对象才能使用它
否则,它将给您“未定义”错误,即foo.bar未定义创建一个执行此操作的小方法
function nested(x, y){
nestedA="";
parts = x.split('.');
for(i=0; i<parts.length; i++) {
nestedA += parts[i];
eval(nestedA + ' = {}');
nestedA += '.';
}
eval(nestedA.slice(0,-1)+ '= "'+y+'"');
}
nested('foo.bar.bartwo', "data");
函数嵌套(x,y){
nestedA=“”;
部分=x.分割('.');
对于(i=0;i创建一个小方法来实现这一点
function nested(x, y){
nestedA="";
parts = x.split('.');
for(i=0; i<parts.length; i++) {
nestedA += parts[i];
eval(nestedA + ' = {}');
nestedA += '.';
}
eval(nestedA.slice(0,-1)+ '= "'+y+'"');
}
nested('foo.bar.bartwo', "data");
函数嵌套(x,y){
nestedA=“”;
部分=x.分割('.');
对于(i=0;ivar foo={bar:{bartwo:“data”}};
create simple“namespace”或者谷歌one@naththedeveloper虽然您的解决方案更简洁,但实际上并不能解决根本问题。嵌套可能需要动态生成多个级别,这对您的示例不起作用。您所要求的是不可能的,因为要向对象添加属性,对象必须存在。您所能做的最好是制作一个可以减轻负担的函数,比如.var foo['bar']={'a':'b'}您可以这样做var foo={bar:{bartwo:“data”};
create simple“namespace”或者谷歌one@naththedeveloper虽然您的解决方案更简洁,但实际上并不能解决根本问题。嵌套可能需要动态生成多个级别,这对您的示例不起作用。您所要求的是不可能的,因为要向对象添加属性,对象必须存在。您所能做的最好是做一个函数来减轻这样做的负担,比如.var foo['bar']={'a':'b'}你可以这样做测试你的代码。它有几个语法问题。=
在做什么?它是连接吗?添加到stringConcatenation中的JS将是+=
,但是你会用{}覆盖这个值
无论如何。请运行你的代码。谢谢,我错过了测试你的代码。它有几个语法问题。=
在做什么?它是连接吗?添加到字符串连接是JS将是+=
,但是你正在用{}
重写值。请运行你的代码。谢谢,我错过了