gpt4 book ai didi

javascript - 如何制作链接方法但同时返回超过 3 个值

转载 作者:行者123 更新时间:2023-11-30 05:45:11 25 4
gpt4 key购买 nike

你肯定见过 jquery。你知道 jquery 允许你像这样链接方法吗:

$('.elements').css({color:'red'}).etc().etc()...

但是如果您注意到,该函数会返回一个对象数组(?):

$(document).ready(function(){
var $elements = $('.c').css({color:'red'});
console.log($elements);
});

( Example, see console to see the result )

$ 函数也一样:

$(document).ready(function(){
var $elements = $('.c');
console.log($elements);
});

( Example, see console to see the result )

两者都返回一个数组,然后可以继续链接。这怎么可能?当它不只返回 this(或对象本身)时为什么可以继续链接?

我读了this post他可以成功添加加号,但那是对现有字符串的添加,因为他对字符串对象进行了原型(prototype)设计。

有什么方法可以存档吗?

更新

我知道它返回一个 jquery 对象,但我如何返回包含值数组的对象并保持与返回值的链接。

更新 2

我要存档的内容

我有这个类,我想要一个方法在链接结束时返回我的对象​​的数组

var elements = Enumerable(anArray).Where(function(elements){ return elements != 1 })

这里 chainig 已经结束,所以它必须返回满足条件的元素,但我想继续 chainig 我只需要这样做:

elements  = elements.Where(function(elements){ return elements == 1}).Take(3);

并根据需要继续链接。

最佳答案

$ 不返回一个数组,它返回一个 jQuery object ,这是一个类数组对象。 IE。它的一些属性具有数字名称,并且它具有 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 对象,该对象公开相同的接口(interface)(显然),因此允许链接。

如果你想自己实现链接,你必须做同样的事情:要么返回 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();

关于javascript - 如何制作链接方法但同时返回超过 3 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18335639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com