gpt4 book ai didi

javascript - Array.prototype.slice.call 在 getElementsByClassName 的重新创建中如何工作?

转载 作者:行者123 更新时间:2023-11-28 00:36:13 27 4
gpt4 key购买 nike

我有一段我大部分都能理解的代码。我唯一不明白的是 Array.prototype.slice.call 在这个实例中是如何工作的。

var getElementsByClassName = function(className){
var elements = $('*').filter(function(index, node){
// this will basically iterate through all nodes on the
// DOM and check to see which node matches the className passed in.
return $(node).hasClass(className);
});
// elements is an array of two elements. array[0] seems to be the non-enumerable
// properties (but it has a length property?) and the other is the element on the dom.
// the usage below slices out array[0] and returns array[1], but since both
// have a length property and numeric indices, why doesn't this usage return
// both items?
return Array.prototype.slice.call(elements);
};

我已经在线留下了我的评论/问题。任何帮助将不胜感激:)。

谢谢,

最佳答案

您的代码构建一个 jQuery 对象,该对象仅包含具有搜索类的 DOM 节点。对 .slice() 的调用只是简单地复制了它。这会更简单一些

return elements.get();

这会做同样的事情。 (当然,$("."+ className) 将取代整个内容。)

jQuery 对象不是数组。它们是模仿数组的,并且 .slice() 方法并不挑剔;只要它正在处理的对象具有 length 方法和数字索引属性(jQuery 对象就有),就可以了。

关于javascript - Array.prototype.slice.call 在 getElementsByClassName 的重新创建中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28465535/

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