首页 > 其他分享 >js类型判断(实用,不拖拉)

js类型判断(实用,不拖拉)

时间:2024-10-22 16:17:20浏览次数:18  
标签:Object 拖拉 object js 实用 toString typeof call prototype

本文介绍三种js类型判断方法。


一、typeof(有坑)

语法:typeof(表达式)、typeof 变量名

返回值:undefined/boolean/string/number/object/function/symbol/bigint

示例:

typeof undefined // undefined
typeof true // boolean
typeof '1' // string
typeof 1 // number
typeof null // object
typeof [] // object
typeof {} // object
typeof funcion(){} // function
typeof Symbol() // symbol
typeof 42n // bigint
...

缺点:  

1. typeof null为object(js历史bug)

2. typeof判断引用类型,除function会被识别出来之外,其余都识别为object

二、instanceof(有坑)

语法:实例对象 instanceof 构造函数

原理:检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上

返回值:true/false

示例:

[] instanceof Array   // true
const n1 = new Number(1) // 构造函数构建
n1 instanceof Number;  // true
const n2 = 1 // 语法糖构建
n2 instanceof Number;  // false
...

缺点:  

因为语法糖构建的变量没有确切的构造函数,instanceof检测不出来。

三、Object.prototype.toString.call()(无坑,推荐)

语法:Object.prototype.toString.call(xxx)

返回值:[object xxx]

示例:

Object.prototype.toString.call(1);  // [object Number]
Object.prototype.toString.call("abc"); // [object String]
Object.prototype.toString.call([])); // [object Array]
Object.prototype.toString.call({}); // [object Object]
Object.prototype.toString.call(true); // [object Boolean]
Object.prototype.toString.call(undefined); // [object Undefined]
Object.prototype.toString.call(null); // [object Null]
Object.prototype.toString.call(new Date()); // [object Date]
Object.prototype.toString.call(function(){}); // [object Function]
...

 - END -

感谢你花费宝贵的时间阅读本文,文章在撰写过程中难免有疏漏和错误,欢迎你在下方留言指出文章的不足之处;如果觉得这篇文章对你有用,也欢迎你点赞和留下你的评论哦。

标签:Object,拖拉,object,js,实用,toString,typeof,call,prototype
From: https://blog.csdn.net/qq_53971395/article/details/143158023

相关文章

  • Nuxt.js 应用中的 build:done 事件钩子详解
    title:Nuxt.js应用中的build:done事件钩子详解date:2024/10/21updated:2024/10/21author:cmdragonexcerpt:build:done是Nuxt.js的一个生命周期钩子,它在Nuxt应用的打包构建器完成运行后被调用。这个钩子为开发者提供了一个在构建过程结束后执行特定逻辑的......
  • actix-web连接mysql并返回json
    toml[dependencies]actix-web="4"mysql="25.0.0"chrono="0.4"serde={version="1.0",features=["derive"]}rsuseactix_web::{get,post,web,App,HttpServer,Responder,HttpResponse,Error};......