数据类型的检测

1.typeof

优点: 可以用来检测基本数据类型,使用简单

缺点: 对复杂数据类型(不好用),对null检测时候,会检测成object

特点: 其实是根据二进制来检测的,null是JS的的0号地址,00开头的,在typeof检测的过程当中,00开头的会检测成object

返回值: 检测出来的数据类型

语法:

typeof 数据内容

typeof (数据内容) => 可以检测表达式

        console.log(typeof []);

        console.log(typeof {});

        console.log(typeof 1);

        console.log(typeof null);

        console.log(typeof Function);

        let a = 10;

        let b = "20"

        console.log(typeof (a+b));

        console.log(typeof a+b);

2.instanceof

优点: 判断某一个数据的的原型链是否存在另外一个数据类型

缺点: 对复杂数据类型不好用,对undefined和null用不了

语法: A instanceof B 判断A的原型链是否存在B

返回值: boolean 存在就true 不存在就是false

function Person(name,age){
    this.name = name;
    this.age = age;
}
const p = new Person("张三",18);

console.log(p instanceof Person);
console.log([] instanceof Array);
console.log(p instanceof Object);
console.log(p instanceof Function);

3.constructor

作用: 用来检测原型对象指向的构造函数

语法: 原型对象.constructor()

缺点: 对undefined和null不适用

返回值: 指向的构造函数

function Person(name,age){
    this.name = name;
    this.age = age;
}
const p = new Person("张三",18);
console.log(Person.prototype.constructor);
console.log(Object.prototype.constructor);
console.log(Function.prototype.constructor);

console.log([].constructor);    
console.log({}.constructor);    
console.log(p.constructor);

4.Object.prototype.toString.call()

作用: 用来检测数据类型,功能强大,都可以检测

缺点: 单词太长了,记不住

返回值: [object 数据类型]

console.log(Object.prototype.toString.call([]));//[object Array]
console.log(Object.prototype.toString.call({}));//[object Object]
console.log(Object.prototype.toString.call(1));//[object Number]
console.log(Object.prototype.toString.call("1"));//[object String]
console.log(Object.prototype.toString.call(null));//[object String]
console.log(Object.prototype.toString.call(undefined));//[object String]
console.log(Object.prototype.toString.call((function(){})));//[object Function]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值