码迷,mamicode.com
首页 > 编程语言 > 详细

javascript 判断对象类型

时间:2015-08-21 13:12:32      阅读:332      评论:0      收藏:0      [点我收藏+]

标签:

以下引用 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]"

javascript 判断对象类型

标签:

原文地址:http://www.cnblogs.com/haigui-zx/p/4747381.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!