3
<script>

(function() {

$('html').addClass('js');

var contactForm = {

    container: $('#contact'),          <-- THIS COMMA

    init: function() {
        $('<button></button>', {
            text: 'Contact Me'
        })
            .insertAfter('article:first')
            .on('click', this.show);
    },  <---------------------------------- AND THIS COMMA

    show: function() {
        contactForm.container.show();
    }
};

contactForm.init();

})();

</script>

在上面的脚本中,我注意到:

container: $('#contact'),

这是声明变量的一种方法吗?执行以下操作会破坏脚本:

var container = $('#contact');

此外,init 函数和容器变量(如果它是变量)后面的逗号是什么?

4

5 回答 5

8

这样你声明一个对象:

var contactForm = {
    // properties:
    property1 : value,
    property2 : value,
    property3 : value,

    // methods:
    method1 : function() {
        // ...
    },
    method2 : function() {
        // ...
    }
};

您可以在MDN中找到有关 JavaScript 对象的更多信息......以及在下面的评论中:)

于 2012-05-30T20:22:25.510 回答
3

该代码块(以 开头var contactForm = {)正在使用对象文字表示法声明对象。逗号分隔对象字面量表示法中的不同键值对。

var obj = { key1: value1, key2: value2 };
于 2012-05-30T20:23:13.920 回答
2

定义对象时,逗号用于分隔名称/值对:

var newObj = {
  name: value,
  another_name: another_value
};
于 2012-05-30T20:22:48.103 回答
1

这些是您定义的由逗号分隔key:value的对象对contactForm

var obj = { key1 : value1, 

            key2 : value2

            method1 : function(){
              // definition
            },
            method2 : function(){
              // definition
            }
}

早期让我感到困惑的是,function(){....}在我发现函数在 js 中也是对象之前,在变量(在本例中为对象)定义中所做的事情可能与您之前使用的语言不同。

这个function(){....}没有名字的函数称为匿名函数。

Here's a good thread on anonymous function为什么需要在同一行调用匿名函数?

于 2012-05-30T20:23:31.427 回答
1

这称为对象字面量表示法。

这基本上是一个逗号分隔的名称/值对列表,用花括号括起来。

这种表示法的优点是大括号内的所有数据都被封装而不是全局定义,这避免了与其他脚本或库的冲突。

于 2012-05-30T20:27:39.647 回答