alert隐藏原型链属性

对JS中的数组进行添加属性出现的问题

问题的发现

先来看一段代码:

var Arry = [1,2,3];
        Arry.test = 4;
        console.log(Arry);

这里对一个数组初始化并且在控制台中显示
在这里插入图片描述
但是当将console.log替换为alert时,在页面里是不显示这个内容的:

var Arry = [1,2,3];
        Arry.test = 4;
        alert(Arry);

在这里插入图片描述

对相关问题的解释

在查找相关资料后,发现原来在一些浏览器中,为了简化输出,会将原型链属性隐藏,但是在控制台中还是可以查看的;
在JavaScript中,数组实际上是特殊的对象,用于表示和操作有序的数据集合。但是当在数组上添加一个属性,例如 test,这个属性不会作为数组的一个元素(索引)来处理。也就是说,当你尝试访问 Arry[0]、Arry[1] 和 Arry[2] 时,仍然只会得到原来的元素(1、2和3)。
不难发现的是,这个test属性是不占数组长度的,它的lengh:3就很好的说明了这个情况。
然而,test 属性仍然存在,它位于数组的原型链上。在某些情况下,为了简化输出或为了特定的显示目的,可能不会显示这个属性。例如,当你使用 alert() 函数时,它可能只显示数组的元素,而不显示原型链上的属性。

总结

因此在使用数组时,我们一般不直接采用这种方式为其添加属性,尽管数组基于对象。

这只是一个小小的分享,希望能对大家有帮助

  • 22
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Full Stack-Qinht

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值