我正在尝试在现有的javascript对象 initialData 中添加新消息。可能也有以前的警告消息,但是在代码下面会抛出错误'SCRIPT5007:无法获取未定义或空引用的属性'推送'。 在下面的代码之前定义为 initialData ['warnings'] =''; 也无法解决此问题。
感谢慷慨的建议,我更改了下面的代码,但仍然收到错误'无法获取未定义或空引用的属性推送'
**修改后的代码**
var initialData = false;
initialData.warnings = [];
initialData.warnings.push({
title: ' Major Warning'
,msg: 'This is a major warning'
});
有人可以指出问题以及如何解决问题。
*** **** Soultion
在数组中分配现有值并在数组中推送新值。之后将指定的数组分配给对象。
var warnings = [] ;
warnings = initialData.warning;
warnings.push({
title: ' Major Warning'
,msg: 'This is a major warning'
});
initialData.warning = warnings;
答案 0 :(得分:2)
有两个主要问题,第一个是初始化为空字符串而不是空数组:
initialData.warnings = [];
然后你有一个语法错误,因为@Rohit指出:
initialData.warnings.push({
title: ' Major Warning'
,msg: 'This is a major warning'] <--- INVALID BRACKET
});
取下支架,它应该可以正常工作:
initialData.warnings.push({
title: ' Major Warning'
,msg: 'This is a major warning'
});
附注:最好对已知属性使用点表示法,为动态属性使用括号表示法
答案 1 :(得分:1)
您需要初始化数组:
initialData.warnings = [];
另外@Rob表示无效支架。
initialData.warnings.push({
title: ' Major Warning'
,msg: 'This is a major warning'] <--- INVALID BRACKET
});
答案 2 :(得分:1)
在Javascript中没有带索引概念的数组。它被称为具有键和值对的对象。你不能在对象中使用push方法。
var obj={a:"A"}; // this is javascript object act like index array
obj.b= "B"; // first method
obj['c']= "C"; // second method
console.log(obj);
//iterate values and keys from javascript object
for(var i in obj){
console.log(i); // console key
console.log(obj[i]); // console value of key
}
答案 3 :(得分:1)
问题出在这一行:
var initialData = false;
此定义使initialData
为boolean
数据类型。它应该是Object
数据类型,以warnings
作为其属性。所以定义应该将它定义为这样的对象:
var initialData = {};
完整代码:
var initialData = {};
initialData.warnings = [];
initialData.warnings.push({
title: ' Major Warning'
,msg: 'This is a major warning'
});
console.log(initialData);
答案 4 :(得分:0)
请在消息后删除括号:&#39;这是重大警告&#39;
initialData['warnings'].push({
title: ' Major Warning'
,msg: 'This is a major warning'
});