javascript - 如何从构造函数返回数组并在 Javascript 中成功链接对象

标签 javascript jquery arrays constructor

我一直在浏览 jQuery 代码,并且看到了一些有此问题的链接。我再次问这个问题是因为我不太理解其中的任何一个,所以请不要将此问题标记为重复。我浏览了以下 stackoverflow 链接:

How can jQuery return an array and still have it to be a jQuery object

How does jQuery chaining work

How does jQuery return an array of the selected objects

浏览了所有这些链接,我不明白它是如何工作的。我所要求的只是一个非常简单的示例,从构造函数对象返回一个数组并仍然链接它。我尝试过以下代码:

(function(window, document, undefined)
{
    var lhd = function(selector)
    {
        return new Lhd(selector);
    }

    function Lhd(selector)
    {
        var elem = document.querySelectorAll(selector),
            elems = {};

        return this.makeArray(elems, elem);
    }

    Lhd.prototype = {
        makeArray: function(arr, result)
        {
            var ret = result || [];

            Array.prototype.push.apply(ret, arr);

            return ret;
        },

        click: function()
        {
            console.log('click');

            return this;
        }
    };

    window.lhd = lhd;
})(window, document);

我能够返回一个数组,但无法链接它。

最佳答案

I'm able to return an array

您不能返回数组,您必须使新实例 (this) 变得类似数组。

function lhd(selector) {
    return new Lhd(selector);
}

function Lhd(selector) {
    var elems = document.querySelectorAll(selector);

    this.length = 0; // initialise a length
    Array.prototype.push.apply(this, elems); // push onto the instance

    // don't `return` anything - it's a constructor
}

Lhd.prototype.click = function() {
    console.log('click');
    return this;
};

您现在可以像 lhd('a').click().click() 一样使用它。

关于javascript - 如何从构造函数返回数组并在 Javascript 中成功链接对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31576822/

相关文章:

javascript - 在 Bootstrap Modal 中使用 HandsonTable 不起作用

javascript - promise 不返回对象

javascript - 由于在 url 中附加参数, Controller 被调用两次

javascript - 服务器端与客户端 (AJAX) 加载

jquery - 图像悬停动画

javascript - 使用 jQuery 将 div 滑入滑出

javascript - 不断循环遍历 JavaScript 文本数组 onclick

c# - 如何使用 Access 数据库中的值填充列表或数组

jquery - 当鼠标悬停在 div 上时如何去除左右间距

c++ - 错误: variable length array of non-POD element type 'string' (aka 'basic_string<char>' )