js四种数据类型判断


js四种数据类型判断


// 1. 使用 constructor是不安全的,因为他的指向是可以改变的
  // undefined 和 null没有 constructor属性
  let bool = true
  // console.log('bool.constructor === Boolean', bool.constructor === Boolean); //true
  
  let nums = 1
  // console.log('number.constructor', nums.constructor === Number); // true
  
  let str = '牛哼'
  // console.log('string.constructor', str.constructor === String);  // true
  
  let obj = { name: 'i love' }
  // console.log('object.constructor', obj.constructor === Object); // true
  
  // let fn = () => {}
  let fn = function () { }
  // console.log('function.constructor', fn.constructor === Function); // true
  
  let arr = [1, 2, 3]
  // console.log('array.constructor',arr.constructor === Array); // true

  function Student(name) {
    this.name = name
  }

  function Person(name) {
    Student.call(this, name)
  }
  let stuu = new Student('niuheng')

  console.log('构造函数 Student.constructor', stuu.constructor === Student); // true

  // 2. typeof  判断 null 对象 数组 都是object ,不能静一步判断他们的类型

  // 3. instanceof 不能区分 null  和 undefined, 对于基本类型,如果不是用new声明的也测不出来
  // 对用使用了new声明的可以检测,而且还可以测出多种嵌套关系


  // 4. Object.prototype.toString.call 相对全能, 但它不能检测非原生构造函数的构造函数名

文章作者: KarlFranz
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 reprint policy. If reproduced, please indicate source KarlFranz !
评论
  目录