[英]How to make chaining method but returning more than 3 value at the same time
您肯定已經看過jquery。 您是否知道jquery允許您像這樣鏈接方法:
$('.elements').css({color:'red'}).etc().etc()...
但是,如果您注意到,該函數將返回一個object(?)數組:
$(document).ready(function(){
var $elements = $('.c').css({color:'red'});
console.log($elements);
});
( 示例,請參見控制台以查看結果 )
$
函數也可以:
$(document).ready(function(){
var $elements = $('.c');
console.log($elements);
});
( 示例,請參見控制台以查看結果 )
兩者都返回一個數組,然后可以保持鏈接。 那怎么可能? 為什么當不返回this
(或對象本身)時仍可以保持鏈接?
我閱讀了這篇文章 ,他可以成功地添加加號,但這是他對字符串對象進行了原型處理后對現有字符串的影響。
它有什么辦法可以將其存檔嗎?
UPDATE
我知道它返回一個jquery對象,但是如何返回包含值數組的對象並保持與返回值的鏈接。
更新2
我要存檔的內容
我有這個類,並且我希望有一種方法可以在鏈式結束時返回對象數組
var elements = Enumerable(anArray).Where(function(elements){ return elements != 1 })
在這里chainig已經結束了,所以它必須返回滿足條件的元素,但是我要保持chaingin我只需要這樣做:
elements = elements.Where(function(elements){ return elements == 1}).Take(3);
並保持鏈接為我想要的。
$
不返回數組,它返回一個jQuery對象 ,它是一個類似於數組的對象。 即,其某些屬性具有數字名稱,並且具有length
屬性。
例:
var obj = {
0: element1,
1: element2,
find: function() {
// some logic
return this; // return a reference to itself for chaining
},
length: 2
};
現在,jQuery方法不返回this
,它返回一個新的jQuery對象,該對象公開了相同的接口(顯然),因此允許鏈接。
如果要自己實現鏈接,則必須執行以下操作:返回this
對象或該對象的新實例,然后使用當前對象具有的數據對其進行初始化。
例:
function Constr(data) {
this.data = data || {};
}
Contr.prototype.chain = function() {
// do stuff
console.log(this.data);
return new Constr(this.data);
// or return this;
};
var obj = new Constr({foo: 'bar'});
obj.chain().chain().chain();
一個jquery對象實際上是html對象的集合,因此當一個函數返回一個jquery對象時,它實際上返回了多個元素。
var ChainableObject = {
data: [],
where: function(fn){
//doStuff with this.data
return this;
},
take: function(n){
//doStuff with this.data
return this;
},
// and so on
//.........
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.