JS数据类型检测

数据类型的检测,可以用typeof、instanceof、constructor、toString()。

typeof

typeof对于基本数据类型判断是没有问题的,但是遇到引用数据类型(如:Array)是不起作用的

// 1.typeof
console.log(typeof "");   //string
console.log(typeof 1);   //number
console.log(typeof true);   //boolean
console.log(typeof null);   //object
console.log(typeof undefined);   //undefined
console.log(typeof []);   //object
console.log(typeof function(){});   //function
console.log(typeof {});   //object
instanceof

instanceof运算符,用来判断一个构造函数的prototype属性指向的对象是否存在另外一个要检测对象的原型链上。

// 2.instanceof
console.log("1" instanceof String);   //false
console.log(1 instanceof Number);   //false
console.log(true instanceof Boolean);   //false
console.log([] instanceof Array);   //true
console.log(function(){} instanceof Function);   //true
console.log({} instanceof Object);   //true
        //    console.log(null instanceof null);//报错
        //    console.log(undefined instanceof undefined);//报错

null和undefined会报错。

constructor

constructor 原型对象的一个默认属性存在,表示创建实例的构造函数的引用。

// 3.constructor
console.log(("1").constructor === String);   //true
console.log((1).constructor === Number);   //true
console.log((true).constructor === Boolean);   //true
//console.log((null).constructor === Null);
//console.log((undefined).constructor === Undefined);
console.log(([]).constructor === Array);   //
console.log((function() {}).constructor === Function);   //true
console.log(({}).constructor === Object);   //true

Object.prototype.toString()

// 4.Object.prototype.toString()
var a = Object.prototype.toString;   
console.log(a.call("aaa"));   //[object String]
console.log(a.call(1));   //[object Number]
console.log(a.call(true));   //[object Boolean]
console.log(a.call(null));   //[object Null]
console.log(a.call(undefined));   //[object Undefined]
console.log(a.call([]));   //[object Array]
console.log(a.call(function() {}));   //[object Function]
console.log(a.call({}));   //[object Object]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值