2014-09-05 68 views
0

有沒有一種方法可以在JavaScript中調用同一個對象上的多個函數? 事情是這樣的:在JavaScript中調用同一個變量的幾個函數

element 
    .html('test'), 
    .css('color', 'green'); 

相反的:

element.html('test'); 
element.css('color', 'green'); 

編輯:謝謝您的回答。我不知道那些jQuery函數返回了它被調用的對象,所以我可以鏈接它們。雖然,我的問題更像是要求等價的,比方說,VB.NET中With語法:

With object 
    .Function1() 
    .Function2() 
End With 
+1

取決於方法。它必須返回它被調用的對象才能工作。效果通常被稱爲「鏈接」。 – 2014-09-05 13:49:45

回答

3

這被稱爲方法鏈接。如果您正在調用的方法返回對象引用,則可能會發生,如果不是,則不會。 (但是你要第一次調用後刪除,。)

因此,這將有這方面的工作,例如:使用時

function Thingy() { 
} 
Thingy.prototype.html = function(value) { 
    // ...do something with `value`... 

    // return `this` for chaining: 
    return this; 
}; 
Thingy.prototype.css = function(name, value) { 
    // ...do something with `name` and `value`... 

    // return `this` for chaining: 
    return this; 
}; 

var t = new Thingy(); 
t.html('test') 
.css('color', 'green'); 

大多數的jQuery的功能,例如,返回this的鏈接目的作爲setter(如果您使用jQuery,因爲它看起來可能來自您引用的函數的名稱)。 (當他們作爲干將,當然,他們返回你得到,而不是this值)。

但如果功能返回的對象引用,它不會工作:

Thingy.prototype.html = function(value) { 
    // ...do something with `value`... 
}; 

t.html('test') 
.css('color', 'green'); // Fails, because what `html` returned wasn't an object 
1

你使用jQuery?與jQuery一起工作的方式是通過方法鏈接。每個函數(html,css)都會返回一個jQuery實例,您可以在其中調用實例上的下一個方法。因此,長話短說,是的,你可以用任何語言來做到這一點,它的全部內容都是關於函數返回的,以便下一個函數可以調用函數。

0

您可以在一個對象像這樣的連鎖經營:

element 
.html('test') 
.css('color', 'green'); 

需要注意的是,每個方法調用上一方法的返回值,所以在jQuery的你在哪裏得到它返回一個對象,這可以工作我們如果你調用一個沒有返回值的方法,事情會變得很奇怪。

第一個代碼塊中唯一的錯誤是.html()調用和.css()調用之間的逗號。

相關問題