Javascript JSON对象属性为;“未定义”;动态到达时

Javascript JSON对象属性为;“未定义”;动态到达时,javascript,json,object,Javascript,Json,Object,我正在将JSON导入到我的JS中,但在尝试使用obj[varWithPropName]访问其属性时遇到了一些问题 但是,当使用obj[“PropName”]时,它可以工作 下面是一个简化的剪报,希望对大家有所帮助 import * as CharInfo from '../Configs/CharInfo.json'; (...) this.ID = "Maya"; console.log("Maya" === this.ID); //true console.log(typeof(Char

我正在将JSON导入到我的JS中,但在尝试使用obj[varWithPropName]访问其属性时遇到了一些问题

但是,当使用obj[“PropName”]时,它可以工作

下面是一个简化的剪报,希望对大家有所帮助

import * as CharInfo from '../Configs/CharInfo.json';
(...)
this.ID = "Maya";

console.log("Maya" === this.ID); //true

console.log(typeof(CharInfo)); //object

console.log(CharInfo["Maya"]); //{configs: {…}, animations: {…}}

console.log(CharInfo[this.ID]); //undefined
这不是与“console”相关的问题,因为当在console.log外部使用时,它在运行时会中断

Uncaught TypeError: Cannot read property 'animations' of undefined
虽然是这样的,

CharInfo.default[this.ID]; //{configs: {…}, animations: {…}}

我想在使用一些转机之前理解为什么会发生这种情况,因为我没有发现有人有同样的问题:)谢谢

这将为您解决问题

从“../Configs/CharInfo.json”导入CharInfo

问题是您正在将文件CharInfo.JSON中的JSON导出为默认值。比如:

json = { /* your json */ };
export default json;
在导入时,您已经导入了

`import * as CharInfo...`  
它将文件中的所有内容导入到一个新变量CharInfo中,默认的导出json作为默认值存在于CharInfo对象中

因此,实际的json现在可以作为CharInfo.default使用

如果您像导入“../Configs/CharInfo.json”那样导入CharInfo,您将在CharInfo内部获得json,CharInfo[this.ID]将正常工作


希望有帮助,请回复任何问题。

为什么不按常规方式声明ID?let/var/const?这只是从类构造函数内部截取的简化代码。