2012-05-30 68 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

這就是所謂的對象文字符號的好線程。

這基本上是一個逗號分隔的名稱/值對列表,用大括號包裹。

這種表示法的優點是大括號內的所有數據都是封裝的,並且沒有全局定義,避免了與其他腳本或庫的衝突。