关于前端学习:Javascript判断数据类型的四种方法

12次阅读

共计 962 个字符,预计需要花费 3 分钟才能阅读完成。

  • 应用 typeof 进行判断

    语法:typeof 判断的数据
    特点:能够精确判断根本数据类型,无奈对简单数据类型进行精确判断

  • 应用 constructor 进行判断

    语法:对象名.constructor
    特点:只能判断简单数据类型,不能判断根本数据类型

  • 应用 instanceof 进行判断

    语法:对象名 instanceof 构造函数
    特点:只能判断简单数据类型,不能判断根本数据类型

  • 应用 Object.prototype.toString.call() 判断

    语法:Object.prototype.toString.call(须要判断的数据)
    特点:能够精确判断所有数据类型

  • 深度理解对象

    • 对象是数据类型的一种,以键值对的模式存储数据 key : value,应用__proto__ 和原型链可拜访本人没有的属性
    • 应用 for in循环可遍历对象身上以及原型链上所有可枚举的属性;咱们能够对属性进行设置是否可枚举
    • hasOwnProperty()能够产看是否是本人的属性
      语法: 对象名.hasOwnProperty('须要检测的属性名')
    • defineProperty()数据劫持
      一种给对象增加属性的形式,能够对属性设置各种各样的行为状态
      语法:Object.defineProperty(须要增加属性的对象, key, {增加怎么样的设置})
  <input id="username"  type="username">
  <script>
    let prop = {
      firstName: '张',
      lastName: '思锐'
    }
    let obj = {}

    Object.defineProperty(obj, 'username', {
      enumerable: true,// 设置属性是否可枚举
      get() {
        // 数据劫持 prop 属性
        return prop.firstName + prop.lastName
      },
      // val 形参接管外界传过来的值
      set(val) {
        // 接管 形参进行批改 属性值内容
        let a = val.slice(0, 1)
        let b = val.slice(1)
        // 应用劫持到的属性进行设置
        prop.firstName = b
        prop.lastName = a
        let inp = document.querySelector('#username')
        inp.value = obj.username
      }
    })
    obj.username = '张一山'
  </script>
正文完
 0