zoukankan      html  css  js  c++  java
  • 通过面试题学JavaScript知识(1)

    // a 是多少的时候 可以让下面的打印ok
    if(a == 1 && a == 2 && a ==3){
      console.log('ok')  
    }
    

      分析1:

        == 比较,如果左右左右两边数据类型不一样  对象 == 字符串  把对象转为字符串,剩下的情况都要转数字

      分析2:

        基本数据类型转数字,默认隐式调用Number()来处理,所以此处a必定不能是基本数据类型

      分析3:

       对象转数字;先转为字符串(先调用valueOf ,获取原始值,如果原始值不是基本类型,继续调用toString ),然后把字符串转数字 

        所以答案有以下三种

      

    var a = {
      i:1,
      valueOf(){
        return this.i++
      }
    }
    

      第二种

    var a = [1,2,3]
    a.toString = a.shift;
    // 当a去比较的时候,一定会调用toString方法, 我现在让他执行shift 每次都去取数组第一项

    第三种 使用Object.defineProperty

    // 使用数据劫持
    var i = 1
    Object.defineProperty(window, 'a', {
       get() {
           return i++
        } 
    })
    

      

      

  • 相关阅读:
    开关门(结构体)
    洗牌问题(找规律)
    七夕节(hd1215)干嘛今天做这题T_T
    三角形(hd1249)
    寒冰王座(hd1248)
    钱币兑换问题(hd1284)
    计算机模拟(hd1283)
    回文数猜想(hd1282)
    贪吃蛇代码
    变形课hd1181(DFS)
  • 原文地址:https://www.cnblogs.com/qqfontofweb/p/12902826.html
Copyright © 2011-2022 走看看