2012-05-30 69 views
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> 

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

container: $('#contact'),

那是一种方式来声明一个变量?执行以下操作符的脚本:

var container = $('#contact');

此外,什么是初始化函数和变量容器后的逗号(,如果它是一个变量)?

+4

这是Javascript对象语法,并不特定于jQuery。 –

回答

8

这样,您声明对象:

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

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

您可以在MDN找到有关JavaScript对象的详细信息...并在下面:)

+0

如果你不介意我的问题,对象究竟是什么?我拥有0个面向对象的编程知识。它是否像一个功能?对不起,如果这个问题是愚蠢的。 – eveo

+1

@eveo这是一个很大的问题。这里有一个摘要(不是特定于js)的例子。看看你的键盘。这是一个对象。键盘的想法是一个“类”,该类的具体实例是一个“对象”。 –

+2

@eveo,我建议你从[MDN的Javascript指南](https://developer.mozilla.org/en/JavaScript/Guide)开始,它将帮助你更好地掌握语言及其实际用途。 –

2

逗号注释用于单独的名称/值定义对当对象:

var newObj = { 
    name: value, 
    another_name: another_value 
}; 
3

即代码块(带有var contactForm = {开始)被声明使用对象文字符号的对象。逗号分隔对象文字表示法中的不同键 - 值对。

var obj = { key1: value1, key2: value2 }; 
+2

不,这不是JSON表示法。 [JSON需要引号围绕键](http://stackoverflow.com/q/949449/464709)。 –

+1

我从来没有意识到有一个区别。我一直认为报价只是可选的。感谢您的链接。 –

1

这些都是key:value对对象的contactForm您定义的commans分离

var obj = { key1 : value1, 

      key2 : value2 

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

是困惑我在我的早年的事情是,什么是function(){....}一个变量中这样做(在这种情况下,对象)定义,直到我发现函数也是js中的对象,这可能与之前使用的语言不同。

和这个功能function(){....}没有名称被称为匿名函数。

这里有匿名函数Why do you need to invoke an anonymous function on the same line?

1

这就是所谓的对象文字符号的好线程。

这基本上是一个逗号分隔的名称/值对列表,用大括号包裹。

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