gpt4 book ai didi

javascript - jQuery 对象如何模仿数组?

转载 作者:可可西里 更新时间:2023-11-01 01:37:36 24 4
gpt4 key购买 nike

jQuery 对象就像数组一样,不会污染原生原型(prototype)。这是如何实现的?

我知道这不仅仅是带有数字键的对象 - 所以也许这只是提供相应方法的问题(类似于 jQuery.prototype.indexOf = Array.prototype.indexOf)。

我用谷歌搜索并查看了源代码,但找不到明确的答案。

最佳答案

尽管 jQuery 对象的行为类似于数组,但它们实际上只是类数组 对象。类数组对象是使用数字键并具有 length 的对象。属性 - 这是与 native array methods 兼容所需的最低要求.

因为 jQuery 对象只是类数组而不是实际的 Array对象, native 数组操作(如 indexOf reverse )不能直接调用。您可以使用 Array.prototype不过,或者扩展 jQuery 的功能。

$('div').reverse(); // TypeError: $("div").reverse is not a function

// we can use Array.prototype though
Array.prototype.reverse.apply($('div'));

// or we can extend jQuery very easily
$.fn.reverse = Array.prototype.reverse;
$('div').reverse(); // now it works!

您的假设是正确的,即 Firebug 不包含任何用于格式化 jQuery 对象的特殊大小写。快速搜索显示 a relevant post在 Firebug 邮件列表上。假设信息仍然正确(该帖子来自一月份),如果对象具有有限长度 splice,Firebug 会将对象格式化为数组。方法

JQuery 满足这两个条件,但是 their implementation of splice 无非是原生Array的直接复制方法。它没有记录,这意味着它要么仅供内部使用,要么可能只是为了诱骗 Firebug 很好地格式化 jQuery 对象而添加。

关于javascript - jQuery 对象如何模仿数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1483445/

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