JS 实现精准分类的typeof()方法
2020-07-14 05:52
169 查看
封装mytypeof方法
系统的typeof方法不能区分对象、数组、包装类的具体类型,所以利用对象原型上的toString方法和类数组,完成一个更加完善的mytypeof()方法。
达到以下效果:
mytypeof ([ ]) --> array
mytypeof ({ }) --> object
mytypeof (function) --> object
mytypeof (new Number( )) --> number
mytypeof (123) --> number
步骤:
1、封装mytypeof,作为工具类方法,区分typeof方法
2、先分类:原始值,引用值
3、区分引用值,先判断是不是null;数组、对象、包装类(new Number)会返回object,通过Obejct.prototype.toString()方法,实现分类输出
var mytypeof = function(target){ //记录通过typeof方法的返回值 var ret = typeof(target); //通过类数组完成引用值的分类 // 属性名为调用toString方法返回的结果,值为该类型数据的输出结果 var template = { "[object Object]" : "object", "[object Numebr]" : "number - object", "[object String]" : "string - object", "[object Array]" : "array - object", "[object Boolean]" : "boolean - object" }; if(target == null){ return "null"; }else if(ret == "object"){ var str = Object.prototype.toString.call(target); //通过原型链上的toString方法的返回值访问类数组中对应的属性值 return template[str]; }else{ return ret; } }
控制台上测试输出:
mytypeof(123) --> “number”
mytypeof(null) --> “null”
mytypeof(“ass”) --> “string”
mytypeof([]) --> “array”
mytypeof({}) --> “object”
mytypeof(new String(“true”)) --> “string - object”
mytypeof(new Boolean(true)) --> “boolean - object”
mytypeof(new Number(123)) --> “number - object”
mytypeof(new Array()) --> “array”
相关文章推荐
- asp实现无限级分类的方法js版
- 无限分类的ASP实现方法
- JS实现禁止查看网页源代码方法总结
- 用JS实现页面滚动位置保持的方法
- js实现运行代码需要刷新的解决方法
- JS实现屏蔽鼠标右键的方法
- js 获取网络图片的高度和宽度的实现方法(变通了下)
- 通过js脚本复制网页上的一个表格的不错实现方法
- 仿服务器端脚本方式的JS模板实现方法
- 关于"多级目录(分类)"的一些想法 ----- 实现方法
- js 浮动层实现方法
- 不用AJAX实现前台JS调用后台C#方法
- 实用js小汇总--获取iframe引用的页面中的控件ID,或赋值的实现方法
- 使用dwr实现下拉框级联和js实现动态选择option的selected状态方法总结
- 转:JS实现刷新iframe的方法
- 用js实现多域名不同文件的调用方法
- 不用AJAX实现前台JS调用后台C#方法(小技巧)
- 使用js实现基于可视布局信息的网页噪音去除的测试方法
- 利用js方法实现html静态页面间参数传递
- 用JS实现禁止查看网页源代码方法总结