js数据类型判断

数据类型种类

  • 原始数据类型:Null Undefined String Number Boolean
  • 引用数据类型:Object
    在JavaScript中,应用数据类型都时继承自Object,比如JS本身提供的Array, RegExp, Date等等。另外还有JS使用者自己构造的类。

typeof

typeof表达式返回字符串,其值有7中类型:'string' 'number' 'boolean' 'undefined' 'object' 'function' 'symbol' 。

  • 对于原属数据类型:NumberUndefinedNumberBoolean 能够返回正确的值,因此判断这些类型时使用typeof表达式式比较方便的。例:typeof('aaaa') === 'string' 返回值为true
  • 对于原始数据类型:Null 返回的值是 'object' ,显然是无法判断Null数据类型的
  • 对于引用数据类型:返回的值都是'object' ,所以无法判断Array Date等数据类型

instanceof

A instanceof B从字面理解就是,A是B的实例,所以它判断的就是对象类型。比如[1] instanceof Array返回值为true。
但是,[1] instanceof Object返回值也是true,这是因为,[1]虽然是有Array构造,但是也是Object的实例。

Object.prototype.toString.call

返回字符串以下格式:[object Object],其中后面的Object对应为实例的构造函数,例如:

  • Object.prototype.toString.call([]) 返回 '[object Array]'
  • Object.prototype.toString.call([]) 返回 '[object Date]'
    但是这个方法之对于JS本身的数据类型有效,对于自定义的类型无用,因为返回值都是'[object Object]'比如:
function Car(color) {
    this.color = color;
};
function MiniCar(color) {
    Car.call(this, color)
}
MiniCar.prototype = Car.prototype;
MiniCar.prototype.constructor = MiniCar;
var miniCar1 = new MiniCar('red');
Object.prototype.toString.call(miniCar1);   // '[object Object]'

访问实例constructor属性

通过直接访问实例的contructor属性,可以的到该数据的来自于那个构造函数,从而得到准确数据类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小寻己

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值