Live2D 看板娘 / Demo

JavaScript判断类型的方法

1.操作符

(1)typeof操作符

格式:type=typeof variable
能判断类型有:number、string、boolean、symbol、undefined、function、bigint(ECMAScript 2020 新增);
object、array、null 的类型都返回 object
返回值为字符串。一共8种(number、string、boolean、undefined、symbol、bigint、function、object)

typeof NaN返回number!!!

(2)instanceof操作符:用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。

格式:result=variable instanceof constructor

返回值:true false

function Father() { }
let f = new Father();
function Son(){ }
Son.prototype = new Father();
let s = new Son();
let d = new Number(12)
console.log(f instanceof Father);// true
console.log(s instanceof Father);// true
console.log(d instanceof Number); //true
console.log(12 instanceof Number); //false,不能判断不是用new创建的基本数据类型

2. 方法

(1)constructor.name

function Foo() { }
var f1 =new Foo();
console.log(f1.constructor);//ƒ Foo() { [native code] }
console.log(f1.constructor.name);//Foo
 
var d = new Number(1)
console.log(d.constructor.name) // Number
 
var date = new Date();
console.log(date.constructor.name)// Date 
 
var arr = [1, 'abc'];
console.log(arr.constructor.name) // Array
 
var reg = /i+/gi;
console.log(reg.constructor.name) // RegExp

(2)Object.prototype.toString() 为 Object 对象的实例方法,默认情况下(即不重写该方法),toString()返回 "[object type]",其中type是对象的类型。

Object.prototype.toString.call(arr) === '[object Array]';//true

返回参数的类型的字符串形式有:

[object Object]
[object Number]
[object Undefined]
[object Null]
[object String] 
[object BigInt

 

String 表示构造函数,'string' 表示变量的数据类型为字符串。

如果问类型是否为String,则应该判断是否为通过new String得到的,是属于引用类型,用xxx instanceof String即可判断。

如果问类型是否为string,那就是在问该变量是否为一个基本类型的字符串,用typeof xxx === 'string'来判断

var str1=new String('str1');
var str2='str2';
console.log(typeof str1);//object
console.log(typeof str2);//string
console.log(str1 instanceof String);//true
console.log(str2 instanceof String);//false
//如果想要判断字面量形式的string和new出的string均为string,可以添加如下方法:
String.prototype.isString=function(str){
    return ((str instanceof String) || (typeof str).toLowerCase() == 'string');
}

 

posted @   小叶_Jiang  阅读(167)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示