Javascript JSON对象属性为;“未定义”;动态到达时
我正在将JSON导入到我的JS中,但在尝试使用obj[varWithPropName]访问其属性时遇到了一些问题 但是,当使用obj[“PropName”]时,它可以工作 下面是一个简化的剪报,希望对大家有所帮助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
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?这只是从类构造函数内部截取的简化代码。