Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对象键-Javascript:为什么';无法在对象内部创建对象?_Javascript_Object - Fatal编程技术网

对象键-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’这不是一个编写简洁代码的问题(或者不能),而是一个代码完全按照你的要求去做的问题——如果你想将一个对象定义为一个属性,你需要明确地告诉解释器这样做。如果我事先没有定义属性,我就不希望解释器自动为我创建一个对象。