我正在尝试设置某个对象的属性,但我有时会收到此错误:添加属性对象
Uncaught TypeError: Cannot read property '4' of undefined
代码:
var obj = {};
obj['fields'][4]['name'] = value;
是,4个不存在的,但为什么它没有创建?
我正在尝试设置某个对象的属性,但我有时会收到此错误:添加属性对象
Uncaught TypeError: Cannot read property '4' of undefined
代码:
var obj = {};
obj['fields'][4]['name'] = value;
是,4个不存在的,但为什么它没有创建?
其实,它告诉你obj['fields']
是未定义的。不,它不会自动为您创建嵌套。
var obj = {};
obj['fields'] = {};
obj['fields'][4] = {};
obj['fields'][4]['name'] = value;
当与物体的工作,如果你不能确定它是否有它的嵌套已经(和你不希望如果它不覆盖它),你可以做到以下几点:
obj['fields'] = obj['fields'] || {}
obj['fields'][4] = obj['fields'][4] || {};
//etc
要检查未定义:
if(!obj['fields']){} // undefined returns falsey
//or
if('fields' in obj == false){} // notice you can't lead with ! here
//or
if(obj['fields'] === undefined){} // note the triple ===
试图读取不存在的属性不会创建它。出现错误的确切原因是尝试访问fields
返回undefined
,并且无法访问undefined
值中的任何属性。
要设置的值,你需要创建所有的父母:
obj.fields = [];
obj.fields[4] = {};
obj.fields[4].name = value;
obj.fields还不存在。您需要先设置该属性(大概是数组),然后才能访问其中的第5个项目。 – Sampson
1.哪个语句出错? 2.如果没有定义obj.fileds,'obj ['fields'] [4] ['name'] = value'上升错误 –