详解JavaScript中的4种类型识别方法


Posted in Javascript onSeptember 14, 2015

具体内容如下:

1.typeof

【输出】首字母小写的字符串形式

【功能】

[a]可以识别标准类型(将Null识别为object)

[b]不能识别具体的对象类型(Function除外)

【实例】

console.log(typeof "jerry");//"string"
console.log(typeof 12);//"number"
console.log(typeof true);//"boolean"
console.log(typeof undefined);//"undefined"
console.log(typeof null);//"object"
console.log(typeof {name: "jerry"});//"object"
console.log(typeof function(){});//"function"
console.log(typeof []);//"object"
console.log(typeof new Date);//"object"
console.log(typeof /\d/);//"object"
function Person(){};
console.log(typeof new Person);//"object"

2.Object.prototype.toString

【输出】[object 数据类型]的字符串形式

【功能】

[a]可以识别标准类型及内置对象类型

[b]不能识别自定义类型

【构造方法】

function type(obj){
return Object.prototype.toString.call(obj).slice(8,-1).toLowerCase();
}

【实例1】

console.log(Object.prototype.toString.call("jerry"));//[object String]
console.log(Object.prototype.toString.call(12));//[object Number]
console.log(Object.prototype.toString.call(true));//[object Boolean]
console.log(Object.prototype.toString.call(undefined));//[object Undefined]
console.log(Object.prototype.toString.call(null));//[object Null]
console.log(Object.prototype.toString.call({name: "jerry"}));//[object Object]
console.log(Object.prototype.toString.call(function(){}));//[object Function]
console.log(Object.prototype.toString.call([]));//[object Array]
console.log(Object.prototype.toString.call(new Date));//[object Date]
console.log(Object.prototype.toString.call(/\d/));//[object RegExp]
function Person(){};
console.log(Object.prototype.toString.call(new Person));//[object Object]

【实例2】

function type(obj){
  return Object.prototype.toString.call(obj).slice(8,-1).toLowerCase();
}
console.log(type("jerry"));//"string"
console.log(type(12));//"number"
console.log(type(true));//"boolean"
console.log(type(undefined));//"undefined"
console.log(type(null));//"null"
console.log(type({name: "jerry"}));//"object"
console.log(type(function(){}));//"function"
console.log(type([]));//"array"
console.log(type(new Date));//"date"
console.log(type(/\d/));//"regexp"
function Person(){};
console.log(type(new Person));//"object"

3.constructor

【输出】function 数据类型(){[native code]}或者function 自定义类型(){}

【功能】

[a]可以识别标准类型、内置对象类型及自定义类型

[b]不能识别undefined、null,会报错

【构造方法】

function type(obj){
  var temp = obj.constructor.toString();
  return temp.replace(/^function (\w+)\(\).+$/,'$1');
}

【实例1】

console.log(("jerry").constructor);//function String(){[native code]}
console.log((12).constructor);//function Number(){[native code]}
console.log((true).constructor);//function Boolean(){[native code]}
//console.log((undefined).constructor);//报错
//console.log((null).constructor);//报错
console.log(({name: "jerry"}).constructor);//function Object(){[native code]}
console.log((function(){}).constructor);//function Function(){[native code]}
console.log(([]).constructor);//function Array(){[native code]}
console.log((new Date).constructor);//function Date(){[native code]}
console.log((/\d/).constructor);//function RegExp(){[native code]}
function Person(){};
console.log((new Person).constructor);//function Person(){}

【实例2】

function type(obj){
  var temp = obj.constructor.toString().toLowerCase();
  return temp.replace(/^function (\w+)\(\).+$/,'$1');
}
console.log(type("jerry"));//"string"
console.log(type(12));//"number"
console.log(type(true));//"boolean"
//console.log(type(undefined));//错误
//console.log(type(null));//错误
console.log(type({name: "jerry"}));//"object"
console.log(type(function(){}));//"function"
console.log(type([]));//"array"
console.log(type(new Date));//"date"
console.log(type(/\d/));//"regexp"
function Person(){};
console.log(type(new Person));//"person"

4.instanceof

【输出】true或false

【功能】

[a]可以识别内置对象类型、自定义类型及其父类型

[b]不能识别标准类型,会返回false

[c]不能识别undefined、null,会报错

【实例】

console.log("jerry" instanceof String);//false
console.log(12 instanceof Number);//false
console.log(true instanceof Boolean);//false
//console.log(undefined instanceof Undefined);//报错
//console.log(null instanceof Null);//报错
console.log({name: "jerry"} instanceof Object);//true
console.log(function(){} instanceof Function);//true
console.log([] instanceof Array);//true
console.log(new Date instanceof Date);//true
console.log(/\d/ instanceof RegExp);//true
function Person(){};
console.log(new Person instanceof Person);//true
console.log(new Person instanceof Object);//true

以上内容就是详解JavaScript中的4种类型识别方法,希望大家喜欢。

Javascript 相关文章推荐
ajax无刷新动态调用股票信息(改良版)
Nov 01 Javascript
JavaScript字符串String和Array操作的有趣方法
Dec 18 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
Nov 04 Javascript
window.location.hash知识汇总
Nov 09 Javascript
JavaScript进阶练习及简单实例分析
Jun 03 Javascript
JavaScript使用键盘输入控制实现数字验证功能
Aug 19 Javascript
node.js支持多用户web终端实现及安全方案
Nov 29 Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
Apr 13 Javascript
vue和webpack安装命令详解
Jun 15 Javascript
vue中关闭eslint的方法分析
Aug 04 Javascript
浅谈Vue的响应式原理
May 30 Javascript
Element Alert警告的具体使用方法
Jul 27 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
Sep 14 #Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
Sep 14 #Javascript
js动态生成Html元素实现Post操作(createElement)
Sep 14 #Javascript
IE9+已经不对document.createElement向下兼容的解决方法
Sep 14 #Javascript
JS动态添加iframe的代码
Sep 14 #Javascript
javascript实现在指定元素中垂直水平居中
Sep 13 #Javascript
window.onload使用指南
Sep 13 #Javascript
You might like
站长助手-网站web在线管理程序 v1.0 下载
2007/05/12 PHP
php入门小知识
2008/03/24 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
2015/12/11 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
2016/02/15 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
php通过smtp邮件验证登陆的方法
2016/05/11 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
深入理解 PHP7 中全新的 zval 容器和引用计数机制
2018/10/15 PHP
JQuery中阻止事件冒泡几种方式及其区别介绍
2014/01/15 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
微信小程序事件 bindtap bindinput代码实例
2019/08/26 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
2020/10/29 Javascript
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
[01:21]2018DOTA2亚洲邀请赛4.5采访 打DOTA2也能有女朋友?
2018/04/06 DOTA
在Python中使用itertools模块中的组合函数的教程
2015/04/13 Python
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
用tensorflow构建线性回归模型的示例代码
2018/03/05 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
Python 面试中 8 个必考问题
2018/11/16 Python
在python中实现调用可执行文件.exe的3种方法
2019/07/07 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
python基于event实现线程间通信控制
2020/01/13 Python
Python logging模块进行封装实现原理解析
2020/08/07 Python
波兰在线儿童和婴儿用品零售商:pinkorblue
2019/06/29 全球购物
行政管理人员精品工作推荐信
2013/11/04 职场文书
大学四年规划书范文
2013/12/27 职场文书
中专生毕业个人鉴定
2014/02/26 职场文书
校本教研活动总结
2014/07/01 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
MySQL数据库⾼可⽤HA实现小结
2022/01/22 MySQL