• 应用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>