(基础点复习四)对象添加length属性伪装成数组进行操作

1.平方根Math.sqrt(x)
立方根Math.cbrt(x)(es6 新增)
Math.pow(x,y)返回参数x的y次幂
Math.round(x) 把参数x四舍五入为最接近的整数

var obj = {
	'2': 3,
	'3': 4,
	'length': 2,
	'splice': Array.prototype.splice,
	'push': Array.prototype.push,
}
obj.push(1);
obj.push(2);
console.log(obj)

知识点:

  • 伪数组 :指具有数字索引并且带有length属性的对象,但不具有关于数组的方法
  • push():可向数组的末尾添加一个或者多个数组元素,并返回新的长度
    push方法根据length属性来决定从哪里开始插入给定的值
    如果length属性不能被转成数值,则执行push方法时插入的索引位置为0
    如果length属性不存在,则插入push方法时会自动创建它,创建后长度为0。
  • 当对象带有数组的splice方法并且length属性可以转变为数值时,对象将会被当做数组打印。

解析:
这个obj中定义了两个 key 值,分别为 splice 和 push,分别对应数组原型中的 splice 和 push 方法,因此这个 obj 可以调用数组中的 push 和 splice 方法。
调用对象的 push 方法: obj.push(1),因为此时 obj 中 { length:2 },所以从索引为2的位置开始插入,也就是数组的第三项。因为数组索引是从0开始的,这时已定义了索引2和3的两项{ ‘2’:3, ‘3’:4 },所以 obj.push(1) 会替换下标为2的一项,此时{length:3} ;obj.push(2) 会替换掉索引下标为3的一项,此时{length:4} 。

此时索引2和3的两项为 { ‘2’:1, ‘3’:2 } 。输出结果就是:Object(4) [empty × 2, 1, 2, splice: ƒ, push: ƒ]。因为只是定义了2和3两项,没有定义0和1两项,所以前面两项是 empty。

版权声明:本文为CSDN博主「kinn-rann」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ThisEqualThis/article/details/112230361

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值