js 数组的骚操作

本文探讨了JavaScript中涉及类型转换的面试题目,包括`==`运算符的类型转换规则。通过示例展示了如何利用`toString`和`shift`方法影响比较。同时,解释了对象模拟数组操作,如`push`和`shift`如何根据`length`属性动态修改对象。文章深入浅出地解析了JavaScript中类型转换和数组操作的微妙之处。
摘要由CSDN通过智能技术生成

以下都是一些面试题目

  • var a = ?;
    if(a == 1 && a == 2 && a == 3){
    console.log(1);
    }

    var a = [1, 2, 3];
    a.toString = a.shift;
    if (a == 1 && a == 2 && a == 3) {
      console.log('1');
    }
    

    进行 == 判断的时候,两边类型要是不相同,会进行一下类型转换
    也可以像下面这样写
    通过伪数组的写法,自定义一个toString的方法

    var a = {
      0: 1,
      1: 2,
      2: 3,
      length: 3,
      toString: Array.prototype.shift
    }
    if (a == 1 && a == 2 && a == 3) {
      console.log('1');
    }
    
  • 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)

不管是Array.prototype.splice还是Array.prototype.push,都是通过length的长度,来对数组进行删除和添加
obj.push(1):1. 先找到length,length=2;2. obj[‘2’]=1;
obj.push(2):1. 先找到length,length=3;2. obj[‘3’]=2;
最终obj = {‘2’: 1, ‘3’: 2}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值