我正在尝试将数据模拟到通常会接收JSON解析数据结构的函数.运行时我TypeError: can't convert undefined to object在这里得到一个错误:data.targets[i] = {
我究竟做错了什么?
function SendFakeTargets(maxTargets, interval) {
var data = {};
data.timestamp = +new Date;
var time = data.timestamp * 0.0005;
var x = Math.sin(time) * 192 + 256;
var y = Math.cos(time * 0.9) * 192 + 256;
console.log(x, y);
for (var i = 0; i < maxTargets; i++) {
console.log(i);
data.targets[i] = { //error is here
id: i,
x: x + (i * 10),
y: y + (i * 10)
};
}
HandleTargetData(data);
setTimeout("SendFakeTargets("+maxTargets+", "+interval+")", interval);
}
Run Code Online (Sandbox Code Playgroud)
你应该先申报
data.targets = [];
Run Code Online (Sandbox Code Playgroud)
在使用data.targets[i]循环之前,否则data.targets是undefined.用更短的方式你可以写
var data = {
timestamp : +new Date,
targets : []
};
Run Code Online (Sandbox Code Playgroud)
作为旁注,永远不要使用字符串setTimeout/Interval.相反
setTimeout(function() {
SendFakeTargets(maxTargets, interval);
}, interval);
Run Code Online (Sandbox Code Playgroud)