在企业级的开发中,我们常用 typeof 来判断企业 对象类型;但是 typeof 不能判断 Array 和 null

这里我们使用一个 原型上的 toString方法;请看一下代码:

 <script>
var allType = {
"[object Array]" : "Array",
"[object String]" : "String",
"[object Function]" : "Function",
"[object Boolean]" : "Boolean",
"[object Number]" : "Number",
"[object Object]" : "Object",
"[object Undefined]" : "Undefined"
};
function MyTypeOf(obj) {
if (obj === null) {
return "null";
}
var res = Object.prototype.toString.call(obj);//使用 Object 原型链上的 toString 方法
return allType[res];
} function myTypeOf(obj) { var type = typeof (obj);
if (obj === null) {
return "null";
} else if (type === "object") {
var res = Object.prototype.toString.call(obj);//使用 Object 原型链上的 toString 方法
return allType[res];
}else {
return type
} } var a = [ 1, 2, 3 ];
var b = "aa";
var c = function() {
};
var d = true;
var e = 1;
var f = {};
var g = undefined;
var h = null; console.log(MyTypeOf(a));
console.log(MyTypeOf(b));
console.log(MyTypeOf(c));
console.log(MyTypeOf(d));
console.log(MyTypeOf(e));
console.log(MyTypeOf(f));
console.log(MyTypeOf(g));
console.log(MyTypeOf(h));
console.log("******************************************")
console.log(typeof (a));//object Array失败
console.log(typeof (b));//string String 成功
console.log(typeof (c));//function function 成功
console.log(typeof (d));//boolean boolean 成功
console.log(typeof (e));//number number 成功
console.log(typeof (f));//object object 成功
console.log(typeof (g));//undefined undefined 成功
console.log(typeof (h));//object null 失败
console.log("******************************************");
console.log(myTypeOf(a));
console.log(myTypeOf(b));
console.log(myTypeOf(c));
console.log(myTypeOf(d));
console.log(myTypeOf(e));
console.log(myTypeOf(f));
console.log(myTypeOf(g));
console.log(myTypeOf(h));
</script>

myTypeOf 函数 可以实现 判断对象的类型;这里使用了原型链上的toString的方法:Object.prototype.toString.call(obj);来实现类型的判断

myTypeOf和 MyTypeOf 实现的功能是一样的;myTypeOf略有优化

js 判断对象类型的更多相关文章

  1. JS判断对象类型

    对于确定JS内置对象类型,JS提供了typeof运算符,该运算符得到的结果为以下6种:number,boolean,string,function,object,undefined.不过对绝大多数对象 ...

  2. html5 -js判断undefined类型

    js判断undefined类型 今天使用showModalDialog打开页面,返回值时.当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回值是undefined所以自作聪明判断 var reVal ...

  3. js判断浏览器类型 js判断ie6不执行

    js判断浏览器类型 $.browser  对象 $.browser.version 浏览器版本 var binfo = ''; if ($.browser.msie) { binfo = " ...

  4. js判断undefined类型,undefined,null,NaN的区别

    js判断undefined类型 今天使用showModalDialog打开页面,返回值时.当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回值是undefined   所以自作聪明判断       ...

  5. js验证对象类型

    js验证对象类型 1. Object.prototype.toString.call() 这是最佳解决方案,可以用作通用方式处理.各种类型的判断依据类似于[object Object],替换的是后边的 ...

  6. js判断undefined类型,undefined,null, 的区别详细解析

    js判断undefined类型 今天使用showModalDialog打开页面,返回值时.当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回值是undefined所以自作聪明判断 var reVal ...

  7. js判断undefined类型

    js判断undefined类型 if (reValue== undefined){    alert("undefined");    }  发现判断不出来,最后查了下资料要用ty ...

  8. Js判断对象是否为空,Js判断字符串是否为空

    Js判断对象是否为空,Js判断字符串是否为空,JS检查字符串是否为空字符串 >>>>>>>>>>>>>>>&g ...

  9. 通过JS判断联网类型和连接状态

    通过JS判断联网类型和连接状态 中国的移动网络环境复杂,为了给用户带去更好访问体验,开发者希望能了解用户当前的联网方式,然后给用户一个符合当前网络环境的请求结果. W3C的规范中给出了一个方法来获得现 ...

随机推荐

  1. 2018.6.10 Oracle数据库常见的错误汇总

    1.ClassNoFoundException 找不到注册驱动 可能原因:1>驱动名称不对 2>没有导入数据库驱动包 2.SQl 语句中可以使用任何有效的函数,函数操作的列,必须指定别名, ...

  2. axiospost请求向后端提交数据

    Axios向后端提交数据容易接收不到原因是传参方式是request payload,参数格式是json,而并非用的是form传参,所以在后台用接收form数据的方式接收参数就接收不到了.post表单请 ...

  3. eclipse 导出Runnable JAR file ,双击无法执行原因与解决 双击后闪退的原因 批处理java打包文件 @echo off start javaw -jar *.jar

    eclipse 导出Runnable JAR file 导出后如果系统没有JRE,双击无法运行,需要用命令方法 安装后解决,如图 双击后闪退的原因,通过执行 java -jar TingGe.jar ...

  4. A1043 Is It a Binary Search Tree (25 分)

    A Binary Search Tree (BST) is recursively defined as a binary tree which has the following propertie ...

  5. 绘制字符串:imagestring()

    <?php //1. 绘制图像资源(创建一个画布) $image = imagecreatetruecolor(500, 300); //2. 先分配一个绿色 $green = imagecol ...

  6. ThinkPHP邮件发送S(Smtp + Mail + phpmailer)

    三种邮件发送介绍:(Smtp,Mail以及phpmailer)ThinkPhp 框架下开发. 邮件发送配置先前准备(用该账号做测试用):(这里用新浪邮箱服务器)将自己的新浪邮箱开通 POP3/SMTP ...

  7. 使用FileSystem类进行文件读写及查看文件信息

    使用FileSystem类进行文件读写及查看文件信息   在这一节我们要深入了解Hadoop的FileSystem类——这是与与hadoop的文件系统交互的重要接口.虽然我们只是着重于HDFS的实现, ...

  8. Java面向对象---面向对象

    程序的发展历程:面向过程-->面向对象 面向过程:不去想怎么做,边做边看 面向对象:先想好怎么做,然后再做 修饰符(访问权限) 访问级别 访问控制修饰符 同类 同包 子类 不同的包 公开 pub ...

  9. Python虚拟机类机制之填充tp_dict(二)

    填充tp_dict 在Python虚拟机类机制之对象模型(一)这一章中,我们介绍了Python的内置类型type如果要完成到class对象的转变,有一个重要的步骤就是填充tp_dict对象,这是一个极 ...

  10. hadoop伪分布式集群的搭建

    集群配置: jdk1.8.0_161 hadoop-2.6.1 linux系统环境:Centos6.5 创建普通用户  dummy 设置静态IP地址 Hadoop伪分布式集群搭建: 为普通用户添加su ...