JS中有哪些识别类型的方法

  1. //1.使用typeof..
  2. //无需封装直接使用.
  3. //可以识别标志类型(null除外)
  4. //不可识别具体的对象类型
  5. typeof(1);//"number"
  6. typeof("");//"string"
  7. typeof([]);//"object"
  8. typeof({});//"object"
  9. typeof(null);//"object"
  10. typeof(undefined);//"undefined"
  11. //2.instanceof
  12. //无须封装使用
  13. //能够判别内置对象类型
  14. [] instanceof Array;//true
  15. /\d/ instanceof RegExp;//true
  16. //不能判别原始类型
  17. 1 instanceof Number;//false
  18. "xiaohong" instanceof String;//false
  19. //能够判别自定义类型
  20. function Point(x, y) {
  21. this.x = x;
  22. this.y = y;
  23. }
  24. var c = new Point(2,3);
  25. c instanceof Point;//true
  26. //3.Object.prototype.toString.call()方法.
  27. Object.prototype.toString.call(21);//"[object Number]"
  28. Object.prototype.toString.call([]);//"[object Array]"
  29. //为了方便使用一般都是使用函数封装如下
  30. function typePrototype(obj) {
  31. return Object.prototype.toString.call(obj).slice(8,-1);
  32. }
  33. typePrototype("guo");//"String"
  34. typePrototype({});//"Object"
  35. //可以识别标准类型,及内置对象类型
  36. //不能识别自定义类型
  37. //4.constuructor指向构造这个对象的构造函数本身..
  38. //可判别原始类型
  39. "guo".constructor === String;//true
  40. (1).constructor === Number;//true
  41. true.constructor === Boolean;//true
  42. ({}).constructor === Object;//true
  43. //可判别内置对象类型
  44. new Date().constructor === Date;//true
  45. [].constructor === Array;//true
  46. //可识别自定义类型
  47. function People(x, y) {
  48. this.x = x;
  49. this.y = y;
  50. }
  51. var c = new People(2,3);
  52. c.constructor===People;//true
  53. //函数封装如下
  54. function getConstructorName(obj){
  55. return obj && obj.constructor && obj.constructor.toString().match(/function\s*([^(]*)/)[1];
  56. }
  57. //利用&&短路特性
  58. //1 obj//如果入参是undefined和null时能够直接返回,因为其没有constructor值
  59. //2 obj.constructor//保证后面的表达式能够正确被执行
  60. //3 obj.constructor.toString()//把构造函数转化为字符串"function Number(){}"
  61. //4 .match(/function\s*([^(]*)/)[1]//获取构造函数字符串中有类型的值"Number"
  62. getConstructorName(new Date());//"Date"
  63. getConstructorName(null);//null
  64. getConstructorName(12);//"Number"
时间: 2024-08-04 18:21:57

JS中有哪些识别类型的方法的相关文章

关于通过JS识别浏览器类型的方法

JS检测浏览器类型的方法   网络上一般采用navigator.userAgent判断浏览器标识的办法,但是有个麻烦的问题是IE11不断升级之后,IE11的userAgent变成: "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; r

jquery ajax中支持哪些返回类型以及js中判断一个类型常用的方法?

1 jquery ajax中支持哪些返回类型在JQuery中,AJAX有三种实现方式:$.ajax() , $.post , $.get(). 预期服务器返回的数据类型.如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML.在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本.随后服务器端返回的数据会根据这个值解析后,传递给回调 函数.可用值: •"xml": 返回

JS判断浏览器类型的方法总结(IE firefox chrome opera safari)

JS判断浏览器类型的方法总结,可判别当前客户端所使用的浏览器是ie,firefox,safari,chrome或者是opera,另外js可以精确判断到ie浏览器的版本,依然直接上代码,需要的朋友可按照自己的要求进行修改. 第一种方法: 1 var Browser=new Object(); 2 Browser.isMozilla=(typeof document.implementation!='undefined')&&(typeof document.implementation.cr

由js apply与call方法想到的js数据类型(原始类型和引用类型)

原文地址:由js apply与call方法想到的js数据类型(原始类型和引用类型) js的call方法与apply方法的区别在于第二个参数的不同,他们都有2个参数,第一个为对象(即需要用对象a继承b,那么此时第一个参数就为a,没有则为null),call方法第二个参数为一个列表,可以是 obj.call(null, 1,2,3,4); 而apply第二个参数为数组.这就是区别,下面来说说对它们的认识. apply最常用的就是查找数组中的最大与最小值,还可以将2个数组合并: var max=Mat

JavaScript手札:《编写高质量JS代码的68个有效方法》(一)(1~5)

编写高质量JS代码的68个有效方法(一) *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { marg

关于使用imag.js出现的问题及解决方法(连载2)

imag.js是一种NativeScript形式的框架,它兼具 Web 应用的灵活和 Native 应用的高性能,可以使用 JavaScript 来开发 iOS 和 Android 原生应用.在 JavaScript 中用Native抽象操作系统原生的 UI 组件,并内置一体化框架,结合 Java..Net.php和HTML5等主流开发语言/开发环境来写XML语法.敲一次代码,能够运行在多个平台上,平台同时融合第三方API以及模板服务. 根据爱码哥用户反馈的问题及我们团队给予的解决办法进行了详细

谈谈Ext JS的组件——布局的使用方法续二

绝对布局(Ext.layout.container.Absolute) 绝对布局让我回想到了使用Foxpro开发的时候,哪时候的界面布局就是这样,通过设置控件的左上角坐标(x,y)和宽度来进行的,因为输入控件的 高度基本是固定的,所以不需要设置.在可视化编程没有出现之前,开发界面算是个苦差事,因为布局是需要花费不少功夫的,例如想要在已经定义好的组件中插入 一个组件,那就得重新修改插入位置以下的组件的坐标,这工作是比较枯燥无聊的,因而,在没必要的情况下,还是少选择这种布局模式. 绝对布局是使用CS

谈谈Ext JS的组件——布局的使用方法续一

盒子布局 盒子布局主要作用是以水平(Ext.layout.container.HBox)或垂直方式(Ext.layout.container.VBox)来划分容器区域.这也是比较常有的布局方式. 使用盒子布局,除了要在容器定义layout配置项外,还需要在子组件指定子组件的宽度(HBox)或高度(VBox).指定宽度或高度有两种方 式,一是直接使用width或height来定义,一是使用flex配置项,根据比例来划分.下面通过一些示例来了解一下盒子布局的使用,这里只使用水平 盒子作为示例,垂直盒

js辨别对象的类型

本文主要针对 Null,ExpReg,Array,Date这一些typeof函数辨别不了的对象: 顺便贴上一篇关于typeof的理解:http://www.cnblogs.com/chaky/p/7284163.html 首先,辨别对象类型的方法: 1.instanceof(是否...的实例)  返回true or false 我们可以用它来辨别 ExpReg Array Date类型的对象  不适用于null 2.constructor //原型对象里的构造器指向: 不支持null识别  这里