对象键-Javascript:为什么';无法在对象内部创建对象?
我不知道我是否精神崩溃,或者只是需要更加努力地处理对象,但我不明白为什么这不起作用:对象键-Javascript:为什么';无法在对象内部创建对象?,javascript,object,Javascript,Object,我不知道我是否精神崩溃,或者只是需要更加努力地处理对象,但我不明白为什么这不起作用: const obj = {}; const obj['pagination']['searchword'] = searchWord; 它说: Cannot set property 'searchWord' of undefined 看起来我无法创建该对象的扭结: console.log(obj) { pagination:{searchWord:valueOfSearchWordVariable} }
const obj = {};
const obj['pagination']['searchword'] = searchWord;
它说:
Cannot set property 'searchWord' of undefined
看起来我无法创建该对象的扭结:
console.log(obj)
{
pagination:{searchWord:valueOfSearchWordVariable}
}
我尝试使用
常量对象分页['searchword']=searchword代码>如果要在对象内部创建对象,必须在某个位置显式定义该对象。如果试图像访问嵌套对象一样访问对象的属性,则不会自动创建一个属性
对于您的情况,在一条语句而不是两条语句中同时定义对象会更容易:
const obj = {
pagination: {
searchword: searchWord
}
};
如果必须在对象初始化后分配,则应执行以下操作:
obj.pagination = {
searchword: searchWord
};
如果更改searchWord
变量名,使其与小写属性名匹配,则可以使用速记法:
obj.pagination = {
searchword
};
如果要在对象内部创建对象,必须在某处显式定义对象。如果试图像访问嵌套对象一样访问对象的属性,则不会自动创建一个属性
对于您的情况,在一条语句而不是两条语句中同时定义对象会更容易:
const obj = {
pagination: {
searchword: searchWord
}
};
如果必须在对象初始化后分配,则应执行以下操作:
obj.pagination = {
searchword: searchWord
};
如果更改searchWord
变量名,使其与小写属性名匹配,则可以使用速记法:
obj.pagination = {
searchword
};
您必须首先定义obj['pagination']。现在您正在分配给一个未定义的
obj是一个空对象。但是什么是obj['pagination']?它还没有定下来。虽然未设置obj['pagination'],但您正在尝试为其分配属性
也可以指定空对象
obj['pagination']={}
然后你就可以这样做了
obj['pagination']['searchword']=searchword
另一种方法
Object.defineProperty(obj,'分页'{
searchword:searchword
}); 您必须首先定义obj['pagination']。现在您正在分配给一个未定义的
obj是一个空对象。但是什么是obj['pagination']?它还没有定下来。虽然未设置obj['pagination'],但您正在尝试为其分配属性
也可以指定空对象
obj['pagination']={}
然后你就可以这样做了
obj['pagination']['searchword']=searchword
另一种方法
Object.defineProperty(obj,'分页'{
searchword:searchword
}); obj['pagination']
未定义您需要初始化它const obj={pagination:{searchword:searchword}
obj['pagination']
未定义您需要初始化它const obj={pagination:{searchword:searchword}代码>谢谢,我以为js比这更快。代码snipet比我上面写的更复杂,在这个对象出现并覆盖它之后,使用最后一个对象,而不添加这个对象,这就是第一个。谢谢,解释得很好!我的生活中有很多承诺和目标的问题。我真的需要了解他们,否则我就死定了。感谢everybodyIt’这不是一个编写简洁代码的问题(或者不能),而是一个代码完全按照你的要求去做的问题——如果你想将一个对象定义为一个属性,你需要明确地告诉解释器这样做。如果我事先没有定义属性,我就不希望解释器自动为我创建一个对象。谢谢你,我认为js比这更快。代码snipet比我上面写的更复杂,在这个对象出现并覆盖它之后,使用最后一个对象,而不添加这个对象,这就是第一个。谢谢,解释得很好!我的生活中有很多承诺和目标的问题。我真的需要了解他们,否则我就死定了。感谢everybodyIt’这不是一个编写简洁代码的问题(或者不能),而是一个代码完全按照你的要求去做的问题——如果你想将一个对象定义为一个属性,你需要明确地告诉解释器这样做。如果我事先没有定义属性,我就不希望解释器自动为我创建一个对象。