标签:
以下引用 http://bushihentian.blog.163.com/blog/static/187174306201401371757775/
使用typeof 关键字 返回值有 ‘string‘ ‘number‘ ‘boolean‘ ‘undfined‘ ‘function‘ ‘object‘ 共六钟
typeof // typeof 可以用来检测给定变量的数据类型,返回一个字符串
console.log(typeof ‘‘); // string
console.log(typeof null); // object
console.log(typeof 1); // number
console.log(typeof {name:‘name‘}); //object
console.log(typeof undefined); //undefined
console.log(typeof [1,2]); //object
console.log(typeof true); //boolean
console.log(typeof function(){}); //function
总结:从上面的例子可以看出,除了 null ,对象,数组以外的其他变量类型都可以准确的检测出是什么数据类型。
null,对象,数组都返回了 object
判断使用typeof 判断是什么基本类型,如果是‘object‘,就可以使用toString获取该对象是什么类型
使用 instanseof 关键字
instanseof // 用于判断一个变量是否某个对象的实例,返回boolean值
var str = ‘123‘;
console.log(str instanceof String); // false
var num = 123;
console.log(num instanceof Number); // false
var bool = true;
console.log(bool instanceof Boolean); // false
var arr = [1,2,3];
console.log(arr instanceof Array); // true
var obj = {name:‘name‘};
console.log(obj instanceof Object); // true
总结:从上面的例子可以看出,普通定义的变量除了数组和对象会返回true,其他的简单类型都返回false.
使用 constructor 属性
constructor // 每个变量都有一个constructor属性,指向自己的构造函数
var str = ‘123‘;
console.log(str.constructor === String); // true
var num = 123;
console.log(num.constructor === Number); // true
var bool = true;
console.log(bool.constructor === Boolean); // true
var arr = [1,2,3];
console.log(arr.constructor === Array); // true
var obj = {name:‘name‘};
console.log(obj.constructor === Object); // true
总结:从上面的例子可以看出,每个变量的构造函数都指向了他们的类型.
所有的对象的prototype最终都指向Object的prototype属性,所以通过Object的toString方法去获取返回值
var str = ‘123‘;
console.log(Object.prototype.toString.call(str)); // "[object String]"
var num = 123;
console.log(Object.prototype.toString.call(num)); // "[object Number]"
var bool = true;
console.log(Object.prototype.toString.call(bool)); // "[object Boolean]"
var arr = [1,2,3];
console.log(Object.prototype.toString.call(arr)); // "[object Array]"
var obj = {name:‘name‘};
console.log(Object.prototype.toString.call(obj)); // "[object Object]"
var obj = null;
Object.prototype.toString.call(str); // "[object Null]"
总结:通过正则或字符截取去获得大写开头的类型字符串,然后通过String.toLowerCase()方法获取对应变量的数据类型。
暂时只发现这几种方法,我们可以根据自己的需求去使用对应的方式去封装getType() 这样的方法
注意自定义的对象返回 "[object Object]" 如:
function Person(){}
var p=new Person();
(Object.prototype.toString.call(p);// "[object Object]"
标签:
原文地址:http://www.cnblogs.com/haigui-zx/p/4747381.html