2010-06-28 61 views
2

我無法理解這樣的代碼:在簡單的jquery函數中如何使用'this'?

$.functionone = function(){ 
    function setOptions(newOptions){ 
     ... 
    } 
    this.setOptions = setOptions; 
} 

什麼添加「這」在「this.setOptions」的呢?我知道它引用函數setOptions,但是在那裏添加'this'會使函數被調用嗎?我知道這是指DOM元素,但在這個特定場景中它有什麼意義。謝謝。

回答

3

這將簡單地將暴露函數從functionone的範圍,作爲$對象的屬性。

例如:

$.functionone = function(){ 

    function setOptions(newOptions){ 
    //... 
    } 
    this.setOptions = setOptions; 
}; 

typeof $.setOptions; // "undefined", it doesn't exist 
$.functionone(); 
typeof $.setOptions; // "function" 

於JavaScript的this值設置隱含當你做一個函數調用。

如果功能被綁定作爲一個對象的屬性(如$.functionone),則this值將參考基礎對象$在您的示例)。

這不是那麼有用IMO,它等同於:

$.functionone = function(){ 
    this.setOptions = function (newOptions) { 
    //... 
    }; 
}; 

這是在年底,當你調用functionone,相當於:

$.setOptions = function (newOptions) { 
    //.. 
}; 

不同的是,該功能不命名,這對調試很有用。

與jQuery插件的this值的工作是更常見的,當你擴展jQuery.fn對象,在this值指的是包含匹配的元素,而不是jQuery的構造本身的jQuery對象的話。

1

該代碼創建一個函數並將其添加爲DOM元素的「setOptions」屬性。

假設代碼的其他部分知道要在DOM元素上查找「setOptions」函數並執行它。

0

this引用調用函數的特定DOM元素。

下面的行:

this.setOptions = setOptions; 

裝置的功能 「setOptions」 被分配給的DOM元素的 「setOptions」 屬性。

相關問題