js 判断对象类型
在企业级的开发中,我们常用 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 判断对象类型的更多相关文章
- JS判断对象类型
对于确定JS内置对象类型,JS提供了typeof运算符,该运算符得到的结果为以下6种:number,boolean,string,function,object,undefined.不过对绝大多数对象 ...
- html5 -js判断undefined类型
js判断undefined类型 今天使用showModalDialog打开页面,返回值时.当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回值是undefined所以自作聪明判断 var reVal ...
- js判断浏览器类型 js判断ie6不执行
js判断浏览器类型 $.browser 对象 $.browser.version 浏览器版本 var binfo = ''; if ($.browser.msie) { binfo = " ...
- js判断undefined类型,undefined,null,NaN的区别
js判断undefined类型 今天使用showModalDialog打开页面,返回值时.当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回值是undefined 所以自作聪明判断 ...
- js验证对象类型
js验证对象类型 1. Object.prototype.toString.call() 这是最佳解决方案,可以用作通用方式处理.各种类型的判断依据类似于[object Object],替换的是后边的 ...
- js判断undefined类型,undefined,null, 的区别详细解析
js判断undefined类型 今天使用showModalDialog打开页面,返回值时.当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回值是undefined所以自作聪明判断 var reVal ...
- js判断undefined类型
js判断undefined类型 if (reValue== undefined){ alert("undefined"); } 发现判断不出来,最后查了下资料要用ty ...
- Js判断对象是否为空,Js判断字符串是否为空
Js判断对象是否为空,Js判断字符串是否为空,JS检查字符串是否为空字符串 >>>>>>>>>>>>>>>&g ...
- 通过JS判断联网类型和连接状态
通过JS判断联网类型和连接状态 中国的移动网络环境复杂,为了给用户带去更好访问体验,开发者希望能了解用户当前的联网方式,然后给用户一个符合当前网络环境的请求结果. W3C的规范中给出了一个方法来获得现 ...
随机推荐
- WQS二分学习笔记
前言 \(WQS\)二分听起来是个很难的算法,其实学起来也并不是那么难. 适用范围 在某些题目中,会对于某个取得越多越优的物品,限定你最多选择\(k\)个,问你能得到的最优答案. 例如这道题目:[CF ...
- 【洛谷2152】[SDOI2009] SuperGCD(Python好题)
点此看题面 大致题意: 给你两个长度\(\le10000\)的正整数,让你求它们的\(gcd\). Python 高精请绕道. 这题的正解应该是Python. 对于这种高精题,肯定是Python最方 ...
- Centos 编译安装bind错误
[root@linux-node1 tmp]# tar xf bind-9.11.1-P1.tar.gz [root@linux-node1 tmp]# cd bind-9.11.1-P1 [root ...
- Java中ArrayList的对象引用问题
前言事件起因是由于同事使用ArrayList的带参构造方法进行ArrayList对象复制,修改新的ArrayList对象中的元素(对象)的成员变量时也会修改原ArrayList中的元素(对象)的成员变 ...
- 运维自动化之Cobbler系统安装详解
原文链接 参考文档 参考文档SA们现在都知道运维自动化的重要性,尤其是对于在服务器数量按几百台.几千台增加的公司而言,单单是装系统,如果不通过自动化来完成,根本是不可想象的. 运维自动化安装方面,早期 ...
- jrtplib移植
jrtplib版本:3.11.1 jthread版本:1.3.3 libsrtp版本:1.6.0 jrtplib库有两种编译方式: 1. 使能jthread编译,此方式可使jrtplib自动在后台轮询 ...
- 【Django】使用list对单个或者多个字段求values值
使用list对values进行求值: 单个字段的输出结果: price_info=list(Book.objects.filter(auth_id='Yu').values('book_price') ...
- java的模运算
在学习某个加密算法的时候留意到模运算,仔细查了资料后才注意到Java中的 % 其实是取余而不是取模,但是百度的时候找到的很多文章都把Java的 % 直接当成取模来用了,为了少踩坑所以自己整理了一下写了 ...
- React学习记录二
环境基本弄清楚了以后,开始总会写个hello world什么的,开发做了这么久了,就跳过这一步吧. 还是从打开vscode说起吧,这里文件菜单打开一个文件夹Demos,查看菜单打开集成终端,也可以使用 ...
- MVP模式与MVVM模式
1.mvp模式(Model层 Presenter层 View 层) Model层 :数据层(ajax请求) Presenter层:呈现层,view逻辑相关的控制层,控制层可以去调Model去发ajax ...