• JavaScript类型转换


    在Javascript中类型转换只有三种情况:

    1. 转换为布尔值
    2. 转换为数字
    3. 转换为字符串

    转换为原始类型

    对象在转换类型的时候,会执行原生方法 ToPrimitive 

    算法如下:

    1. 如果已经是 原始类型 ,则返回当前值
    2. 如果需要转 字符串 则先调用toString方法,如果此时是 原始类型 则直接返回,否则再调用valueOf方法并返回结果
    3. 如果不是 字符串,则先调用valueOf方法,如果此时是 原始类型 则直接返回,否则再调用toString方法并返回结果
    4. 如果都没有 原始类型 返回,则抛出 TypeError 类型错误

    一道面试题:a可以同时==1 && ==2 && ==3吗?

    const a = {
      arr: [3, 2, 1],
      valueOf() {
        console.group('valueOf')
        console.log(this.arr)
        console.groupEnd('valueOf')
        return this.arr.pop()
      }
    }
    if (a == 1 && a == 2 && a == 3) {
        console.log('yes!')
    }

    当然还有其他的实现方式:

    比如:

    对getter的劫持

    当对象属性在进行查询时会被调用get方法

    const a = new Proxy({}, {
      val: 1,
      get() {
        return () => this.val++
      }
    })
    if (a == 1 && a == 2 && a == 3) {
        console.log('yes!')
    }
  • 相关阅读:
    Handler使用总结(转)
    LR连接oracle数据库-lr_db_connect
    selenium2(WebDriver)环境搭建
    使用selenium控制滚动条(非整屏body)
    selenium-打开IE浏览器遇到问题记录
    使用re-sign.jar对apk进行重签名
    Robotium-无源码测试
    genymotion不能联网
    SQL 常用脚本
    todolist
  • 原文地址:https://www.cnblogs.com/zyl-Tara/p/12553459.html
Copyright © 2020-2023  润新知