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

【javaScript经验】javaScript类型判断

时间:2015-03-03 11:38:39      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

原生JS提供了typeof操作符来判断类型,判断基本类型时没问题,但当判断复杂类型时便有点不尽人意。

基本类型有哪些?

众说纷纭,争议的是null和function算不算基本类型?个人觉得能被typeof出正确类型的都是基本类型,来看以下代码:

/*基本类型*/
alert(typeof nudefined);//输出 "nudefined"
alert(typeof function(){});//输出 "function"
alert(typeof "a");//输出 "string"
alert(typeof 1);//输出 "number"
alert(typeof true);//输出 "boolean"

/*复杂类型*/
alert(typeof []);//输出 "object"
alert(typeof {});//输出 "object"
alert(typeof new Date());//输出 "object"
alert(typeof new RegExp());//输出 "object"
alert(typeof null);//输出 "object"

以上用typeof都能正确输出基本类型值,而复杂类型输出的都是"object",那该怎么正确的得知复杂类型的正确类型值呢?

Object.prototype.toString.call() 来看ECMA5中的描述:

When the toString method is called, the following steps are taken:
If the this value is undefined, return “[object Undefined]“.
If the this value is null, return “[object Null]“.
Let O be the result of calling ToObject passing the this value as the argument.
Let class be the value of the [[Class]] internal property of O.
Return the String value that is the result of concatenating the three Strings “[object ", class, and "]“.

由于 JavaScript 中一切都是对象,任何都不例外,对所有值类型应用 Object.prototype.toString.call() 方法结果如下:

(小知识点:为什么讲JS中一切皆是对象,原因是你把任何类型当作对象的时候它就是对象,后台会自动把它包装成对象)

console.log(Object.prototype.toString.call(123)) //[object Number]
console.log(Object.prototype.toString.call(‘123‘)) //[object String]
console.log(Object.prototype.toString.call(undefined)) //[object Undefined]
console.log(Object.prototype.toString.call(true)) //[object Boolean]
console.log(Object.prototype.toString.call({})) //[object Object]
console.log(Object.prototype.toString.call([])) //[object Array]
console.log(Object.prototype.toString.call(function(){})) //[object Function]

所有类型都会得到不同的字符串,几乎完美。当真完美。

Object.prototype.toString.call()  可以简化成 {}.toString.call()。

 

【javaScript经验】javaScript类型判断

标签:

原文地址:http://www.cnblogs.com/yangzonglong/p/4310344.html

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