簡體   English   中英

如何制作鏈接方法,但同時返回三個以上的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM