Array.prototype.push push向数组尾部添加一项并更新length ,返回数组长度。
如果Object使用push会怎样?
看下面代码, obj好像数组一样工作了。length会自动更新。
复制代码 代码如下:
var push = Array.prototype.push;
var obj = {};
push.call(obj, "hello"); // 返回值 1
// obj {"0":"hello", length:0}
push.call(obj, "world"); // 返回值 2
// obj {"0":"hello", "1":"world",length:2}
Array.prototype.length Array.prototype.splice
把length和splice 给Object
看下面代码:obj这货居然变成数组了?其实不然这可能是调试工具的一些输出检查问题。
我们用 instanceof 测试 obj instanceof Array //false
var obj = { length:0, splice:Array.prototype.splice};console.log( obj ); // 打印:[]
继续看下面的代码:
obj.push(0)//返回obj.length
1obj.push(1)//返回obj.length
2obj.splice(0, 1);//删除第一项 返回删除项
[0]obj.length // 1 splice删除一项的时候同样更新 length属性
这样obj的表现几乎和array一样了。不出意外slice,pop,shift,unshift什么的都可以正常工作在object中。
不过如果直接设置length,在数组中会删除大于length的下表的项, 但里的obj并不不会更新。
应用在哪? jQuery对象表现像一个array,其实他是一个对象。这种对象如何new出来呢?
实际jQuery把Array的方法借给Object,从而达到这个jQuery对象的效果,jQuery对象内部也直接使用push等Array的方法。
看看jQuery的部分源码 (注意加粗)
复制代码 代码如下:
// Start with an empty selector
selector: "",
// The current version of jQuery being used
jquery: "1.7.1",
// The default length of a jQuery object is 0
length: 0,
......
// For internal use only.
// Behaves like an Array's method, not like a jQuery method.
push: push,
sort: [].sort,
splice: [].splice
如果你要把Object玩成Array,那么可能潜在的问题length属性不会和“数组”项总和对应起来。
所以直接使用length设置长度不会得到支持。
看下面jquery代码,虽然length更新了,jquery的对象并没更新。(当然这并不是jquery的问题)
var jq = $('div') //假设我们在页面获取了40个
divjq.length // 40
jq.length = 0;jq// ? jq中仍然存放了40个dom对象 length属性不会和“数组”项总和对应起来。
Object使用array的方法还能正常工作,实在有些意想不到,可能实际应用远不止这些。
相关推荐:
为什么要做seo si,为什么要做* ,ai里面怎么扣二维码
ChatGPT显示“此网站无法加载站点”:背后原因与解决办法详解,用ai画明度渐变条
SEO重要性与企业互联网发展的必由之路,互联网营销推广平台设计
优化平台:让数字化转型更简单、更高效,莆田谷歌seo品牌排行
ChatGPT:如果您正在使用VPN,这些技巧您一定要知道!,AI换脸*H
SEO优化:让你的网站在竞争中脱颖而出,临沧seo代理
ChatGPT画布打不开?如何解决这一常见问题?,Ai怎么储存为Ai格式在桌面
Bing搜索不能预览了?搜索引擎的新变革与挑战,ai制作一张窗花
ChatGPT免费版的限制:你需要了解的5大制约因素,Ai分解模型
ChatGPT故障你从未听过的真相,究竟是什么让它偶尔“失灵”?,ai 图片 矢量
ChatGPT付款银行卡被拒绝?解决方案全解析!,小发猫ai智能写作查重能过吗
SEO子-为你的网站注入流量的秘密武器,麻城网站网址优化
SEO译为:网站排名背后的优化策略,会展中心网站优化
ChatGPT-4中文免费破解版:无需付费,体验最强AI助手,ai写作生成器官方下载
AI网页版本:开启智能时代的新篇章,拼音标调ai
SEO实现:如何通过SEO优化提升网站流量与排名,南京市公司网站推广
ChatGPT异常了:人工智能的极限与突破,ai and ethics
ChatGPT显示无法加载网站是怎么回事?解决方法!,glow将军ai
ChatGPT页面无法访问?解决方案,让你轻松摆脱困扰!,ai染发颜色
seo网络培训是什么,seo工作培训会培训啥 ,ai长投影字
ChatGPT的破解版:AI世界的新突破,ai无禁忌
ChatGPT为什么访问不了了?了解背后的原因与解决方法,AI怎么拖入路径
什么是seo长尾词,什么是seo长尾词的概念 ,绿茶ai换脸杨超越
文字写作AI生成工具:让创作更简单、更高效
ChatGPT网站突然不能用了?如何快速解决这个问题,让你重新畅享AI对话!,ai新建多个画板
用AI修改文章,提升写作效率与质量的新时代
优化文字,让表达更精准:提升写作效率的关键,个人网站建设外包
ChatGPT无法加载?检查网络并尝试重启,助您快速恢复畅通体验,burj ai
AI助手Stut:智能时代的创新引擎,开启未来工作新篇章,ai对ai的格斗游戏
OpenAI网站崩溃原因:背后的技术与挑战,千牛Ai智投在哪里找
AI自动读文:让阅读更轻松、更高效的智能革命,寄ai空
SEO在线服务-让您的网站快速跃升至搜索引擎前列,江西小红书营销推广案例
ChatGPT维护页面-背后的技术与用户体验,ai领域ppt
怎么用AI生成文章免费版,高效创作从此开始!
SEO收费如何选择合适的SEO服务,提升网站排名并增加曝光度,做网站优化哪家实惠
什么是seo的豆子,何为seo ,ai圆复制
seo网站是什么找行者SEO,seo分析网站 ,ai图文梅花
什么是神马排名?让你的网站脱颖而出,轻松占据搜索引擎的C位!,乳山网站优化关键词排名
ChatGPT中文版下载,开启智能对话新体验,婚纱ai男
seo跟sem是什么,seo和sem的概念 ,惠威的ai功能
seo管理系统是什么,seo网站管理 ,过度圆ai
SEO就业前景如何?打造数字时代的职业新风口,常州武进区水产网站建设
ChatGPT进不去怎么办?解决方案与技巧,轻松畅享智能对话,ai va
SEO优化知识全解析:提升网站排名的秘密武器,ai出错合集
seo网站关键字排名优化,网站seo关键词 ,运动ai
未来的效率利器AI软件下载AI,助您轻松驾驭智能世界
360排名优化价格:打造高效网络营销的制胜法宝,ai换脸刘浩存自wei
优化整站,让网站飞速增长,打造行业竞争力,广东网站建设与维护
Chat免费,让沟通无界限,尽享智能对话时代,ai没办法置顶
优化入口:提升网站流量与转化率的秘密武器,琼海关键词排名品牌