嵌套在Javascript中有限制吗? (“错误21:未定义不是Illustrator中的对象”)

时间:2016-06-09 01:19:57

标签: javascript scripting adobe

我正在使用Adobe Illustrator CC 2015的JavaScript,我正在尝试组织有关画板的信息。

var myArt = {

types : { 
    type: "",
    board : {
        name : "",
        refNum : 0,
        chk : {}
    }
}
}; 

//initialize
myArt.types = [0, 1, 2, 3, 4, 5, 6, 7, 8];

for (i=0; i<myArt.types.length; i++) {
    myArt.types[i].board = [0, 1, 2, 3, 4, 5, 6, 7, 8];
        for (j=0; j<myArt.types[0].board.length; j++) {
            myArt.types[i].board[j].name = "";
        }
};

我获得Error 21: Undefined is not an object第二个for循环。

据我所知,“类型”适用于“董事会”。我能看到的唯一区别是,董事会的嵌套层次更深。所以我想我想知道嵌套是否存在某种限制,或者是否存在其他一些我没有捕获的问题。

A picture of the code with error message.

1 个答案:

答案 0 :(得分:2)

您使用一系列数字覆盖myArt.types。因此,在您尝试执行myArt.types[0].board.length的第二次迭代中,您实际上正在调用0.board.length,1.board.length,但0.board未定义。看起来你在javascript中混合了对象和数组。默认情况下,对象不具有长度属性。

这是你的循环所暗示的数据结构:

var myArt = {
    types: [{
            type: "",
            board: [{name: "",refNum: 0,chk: {}}]
        }]
};