首页 > 其他分享 >JS数据类型判断

JS数据类型判断

时间:2022-11-12 18:11:21浏览次数:48  
标签:判断 console log object 数据类型 JS typeof constructor true

数据类型判断

  • typeof
  • instanceof
  • constructor
  • Object.prototype.toString.call()

typeof

typeof可以检测出的数据类型 number、string、boolean、undefined和function。

注意:无法准确检测出null、array、object;得出的结果全部是object无法进一步判断

const obj = { name:'tome', age:18 }
const arr = [1,'two','red']
const fn = function () {
  console.log('这里是函数')
}
console.log(typeof 1) //number
console.log(typeof 'hello') //string
console.log(typeof true) //boolean
console.log(typeof undefined) // undefined
console.log(typeof fn) //function
console.log(typeof null) // object
console.log(typeof obj) //object
console.log(typeof arr) //object

instanceof

instanceof只能用来检测构造函数的prototype属性是否出现在某个实例对象的原型链上。(关于原型链后期会专门写一篇进行学习)
基本数据类型只有通过对应类型构造函数创建出来成对象形式,才会是对应类型构造函数实例(true),
直接写基本数据类型值则不是(false),
引用类型可以直接作为左侧实例对象继承自右侧构造函数,返回值为true。

  • object instanceof constructor
    • object: 实例对象 必须为对象类型
    • constructor 构造函数 必须为函数类型

用来检测 constructor.prototype 是否存在于参数 object 的原型链上。

console.log('str' instanceof String)//false
console.log(new String('str') instanceof String) //true
console.log(new Number(3) instanceof Number) // true
console.log([1,2] instanceof Array) //true
function test() {}
console.log(test instanceof Function) //true

constructor

console.log((1).constructor === Number ) //true
console.log(('str').constructor === String ) //true
console.log(true.constructor === Boolean); // true
console.log(([]).constructor === Array); // true
console.log((function() {}).constructor === Function); // true
console.log(({}).constructor === Object); // true
console.log((Null).constructor === Object); // 报错
function Fn(){}
Fn.prototype = new Array();
const f=new Fn();
console.log(f.constructor===Fn);    // false
console.log(f.constructor===Array); // true

Object.prototype.toString.call()

在JS中, 可以通过Object.prototype.toString方法,判断某个对象之属于哪种
内置类型:null、string、boolean、number、undefined、array、function、object、date、math。

function getType(val){
  const res = Object.prototype.toString.call(val);
  return res.match(/\[object (.*?)]/)[1].toLowerCase()
}
console.log(getType(1)) //number
console.log(getType('str'))//string
console.log(getType(true))//boolean
console.log(getType(undefined))//undefined
console.log(getType(null)) //null
console.log(getType({name:'tome'})) //object
console.log(getType([1,2,3])) //array
console.log(getType(()=>{})) //function

标签:判断,console,log,object,数据类型,JS,typeof,constructor,true
From: https://www.cnblogs.com/chen-study/p/16884350.html

相关文章