Javascript - 在运行中创建对象时出错

Chr*_*ris 0 javascript

我正在尝试将数据模拟到通常会接收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)

fca*_*ran 5

你应该先申报

data.targets = [];
Run Code Online (Sandbox Code Playgroud)

在使用data.targets[i]循环之前,否则data.targetsundefined.用更短的方式你可以写

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)