在企业级的开发中,我们常用 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. DOS&8086微处理器

    DOS DOS环境,需要安装dosemu来模拟DOS环境(Ubuntu的应用商店就有),为了编写汇编,还需要DEBUG.MASM.LINK等汇编语言开发工具.如果你嫌麻烦,推荐使用实验楼已搭好的免费的 ...

  2. 2018.5.23 创建用户并授权&&&序列

    作业一 视图的创建 1.分页查询2-3范围之间的数据,并用视图(view_student_page)保存. create view view_student_page as select * from ...

  3. python剑指offer 合并两个排序的链表

    题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. # -*- coding:utf-8 -*- # class ListNode: # def _ ...

  4. 函数指针 && 指针函数

    bitmap.anim_and_exit((void(*)(void*, int))anim_gpu,(void(*)(void*))anim_exit); 在学习arm过程中发现这“指针函数”与“函 ...

  5. Java设计模式学习——简单工厂

    一. 定义与类型 定义:有工程对象决定创建出哪一种产品类的实例 类型:创建型,但不属于GOF23中设计模式 二. 适用场景 工厂类负责创建的对象比较少 客户端(应用层)只知道传入工厂类的参数,对于如何 ...

  6. Repeater控件里面取不到CheckBox的值

    然后在后台需要取到,选中了那些 然后在后台怎么取也取不到,当时就纳闷了,然后开始怀疑自己的代码是不是错了,经过仔细一看,我的妈呀,加载事件了差一句话......整个人都不好了 加载事件差这句话不行,补 ...

  7. C#的接口基础教程之七 覆盖虚接口

    有时候我们需要表达一种抽象的东西,它是一些东西的概括,但我们又不能真正的看到它成为一个实体在我们眼前出现,为此面向对象的编程语言便有了抽象类的概念.C#作为一个面向对象的语言,必然也会引入抽象类这一概 ...

  8. window10启用administrator 和启用组策略编辑器

    1,启用administrator账户 net user administrator /active:yes 2,启用组策略编辑器    新建一个文本文件.把下面代码粘贴进去.修改后缀名为.cmd  ...

  9. Jquery 就是怎么取得一个select的当前值

    <select id="cursel">: <option value="1">值1</option>: <optio ...

  10. shell基础及变量符号

    kernel主要的功能: 1.内存的管理 2.设备驱动程序 3.文件系统的管理 4.进程的管理 5.网络系统   vim /etc/profile.d/ profile(主配置文件) .d(子配置文件 ...