我已經打開了jQuery 1.7.1庫並想研究代碼,但是我發現函數以奇怪的方式聲明(對我來說)。例如:jQuery函數聲明說明
show: function() {
//some code here
},
我學會了定義在這條路上功能:
function show() {
//some code here
}
有人能解釋我爲什麼顯示功能沒有(在大多數教程像互聯網上)寫上第二個方法是什麼?
我已經打開了jQuery 1.7.1庫並想研究代碼,但是我發現函數以奇怪的方式聲明(對我來說)。例如:jQuery函數聲明說明
show: function() {
//some code here
},
我學會了定義在這條路上功能:
function show() {
//some code here
}
有人能解釋我爲什麼顯示功能沒有(在大多數教程像互聯網上)寫上第二個方法是什麼?
這是因爲它在一個對象內。 Object Literals
有這樣定義自己的屬性:
{
name: value,
//OR
'name': value
}
其中value可以是幾乎任何諸如數字,字符串,功能,甚至另一個對象。在JavaScript中,您還可以聲明anonymous functions
並將它們分配給一個變量。事實上,下面的聲明有同樣的效果:
//declares the myFunc1 function
function myFunc1() {}
//declares an anonymous function and assigns it to myFunc2
var myFunc2 = function() {};
//you can now call either like so:
myFunc1();
myFunc2();
因此,結合這兩個概念,如果我有一個對象,我想它的一個屬性是一個函數,我會做它像這樣:
var myObj = {
name: 'My Object',
init: function() {
return 'Initializing!';
},
version: 1.0
};
alert(myObj.init());
然後,您將得到輸出:Initializing!
。確保檢查出很好的文檔和教程Mozilla Developer Network,包括他們JavaScript Tutorial Series
希望這有助於!
寫它的第一種方法實質上是將一個函數設置爲一個對象的屬性。
例如:
// I can create a new empty object
var myObject = {};
// or I can create a new object with a basic property
var myObject = {
color: "blue"
};
// I can also create an object with methods (like jQuery)
var myObject = {
color: "blue",
showColor: function(){
alert(this.color);
}
};
// and you can use the object like this
myObject.showColor(); // calls the showColor method and will alert "blue"
這有助於jQuery的封裝,命名空間和組織代碼。
這裏有幾個不錯的寫起坐:
第一個聲明,即show: function
,定義節目是現場在具有類型函數的對象中。第二個函數在當前範圍內聲明一個名爲show的函數(可能是全局函數?)
它們被描述爲一個js對象函數。在這種情況下:
var jQuery = {
show: function(){
//some code here
}
}
因此,您可以像jQuery.show()那樣訪問它。
我想說乍得的答案是最準確的深入研究。你應該仔細研究它們,因爲它們可以徹底改變你以非常乾淨的方式寫js,而這種方式與其他圖書館衝突的可能性要小得多。
你在第一個例子中遺漏了一些代碼嗎?看起來像它是更大的東西的一部分... –
該函數是一個函數表達式,它是在一個對象文本中分配的。 –
@AbeMiessler你是對的,但函數內部的代碼在這裏並不重要,因爲我只是要求函數的語法解釋。 –