-3

谁能告诉我我的语法有什么问题。我对数组的 javascript 对象有这个声明:

$.fn.eCardify.frames = {
    nonie: {
        {flip_over_envelope, flip_over_envelope},
        {open_envelope, open_envelope},
        {show_card, show_card},
        {open_card, open_card}          
    },
    ie: {
        {flip_over_envelope_ie, flip_over_envelope_ie},
        {open_envelope_ie, open_envelope_ie},
        {show_card_ie, show_card_ie},
        {open_card_ie, open_card_ie}
    }
}

我正在尝试以这种方式访问​​它:

function step(){
    if($.fn.eCardify.settings.is_ie){
        $.fn.eCardify.frames.ie[$.fn.eCardify.frame]();
    }else{
        $.fn.eCardify.frames.nonie[$.fn.eCardify.frame]();
    }
    $.fn.eCardify.frame++;
}

但是,chrome(可能还有其他浏览器)不喜欢我的数组声明。它给了我Uncaught SyntaxError: Unexpected token {数组声明的第二行。

我究竟做错了什么?

4

4 回答 4

6

{}用于对象而不是数组

$.fn.eCardify.frames = {
    nonie: [
        [flip_over_envelope, flip_over_envelope],
        [open_envelope, open_envelope],
        [show_card, show_card],
        [open_card, open_card]
    ],
    ie: [
        [flip_over_envelope_ie, flip_over_envelope_ie],
        [open_envelope_ie, open_envelope_ie],
        [show_card_ie, show_card_ie],
        [open_card_ie, open_card_ie]
    ]
}
于 2013-10-01T15:24:16.487 回答
3

数组使用[].

{}用于对象(具有键/值对)

于 2013-10-01T15:24:10.503 回答
1

你所拥有的不是一个数组,因为括号是卷曲的。如果要声明数组,请使用方括号:

$.fn.eCardify.frames = {
    nonie: [
        [flip_over_envelope, flip_over_envelope],
        [open_envelope, open_envelope],
        [show_card, show_card],
        [open_card, open_card]          
    ],
    ie: [
        [flip_over_envelope_ie, flip_over_envelope_ie],
        [open_envelope_ie, open_envelope_ie],
        [show_card_ie, show_card_ie],
        [open_card_ie, open_card_ie]
    ]
}

虽然这个结构还是很奇怪。你为什么需要这样的东西?

于 2013-10-01T15:25:33.773 回答
0

对象表示如下:{},而数组则表示:[]

两者之间的区别之一是对象需要一个 key:value 定义,而数组可以只是一组值。

例子

var arr = [val1, val2, val3];
var obj = {'key1': val1, 'key2': val2, 'key3': val3};
于 2013-10-01T15:26:36.917 回答