javacript至今共有7中类型

Six data types that are primitives:

  1. Boolean
  2. Null
  3. Undefined
  4. Number
  5. String
  6. Symbol (new in ECMAScript 6)
  7. Object

关于typeof的详情解释

demo1:

Function.prototype.toString() 与 Object.prototype.toString()的区别:


  1. var f = function(){};
  2. f.prototype.hasOwnProperty("toString") ; //=>false
  3. Function.prototype.hasOwnProperty("toString"); //=>true
  4. Object.prototype.toString.call(f); //=>[object Function]
  5. Function.prototype.toString(f); //=>"function () {}"
  6. Object.toString.call(f) ; //=>"function () {}"
  7. //注:Object 是由Function构造的,所以Object.toString会这样 ,由Object.__proto__.toString 遍历原型链去找到Function.prototype.toString() 打印,所以会打印function f(){}
  8. //jquery 类型的判断,demo2
  9. {}.toString.call(f); //=>[object Function]

所以,所有由Object.prototype.toString 方法调用的对象,都是会打印出[object Function],[object String] 或者其他类似的格式,而这个结果也常常会被我们用来去判断这是否是一个String 字符串,Array ...

  1. Object.prototype.toString.call([]) === "[object Array]" // ==>"[object Array]"
  2. Object.prototype.toString.call({}) === "[object Array]" // ==>"[object Object]"
demo2:

jQuery.type() 方法的源码解析:

  1. var class2type = {};
  2. // Populate the class2type map
  3. /* 覆盖class2type: 用做返回的的类型
  4. var class2type = {
  5. "[object Boolean]":"boolean",
  6. "[object Number]":"number",
  7. "[object String]":"string",
  8. "[object Function]":"function",
  9. "[object Array]":"array",
  10. "[object Date]":"date",
  11. "[object RegExp]":"regexp",
  12. "[object Object]":"object",
  13. "[object Error]":"error"
  14. }
  15. */
  16. jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
  17. function( i, name ) {
  18. class2type[ "[object " + name + "]" ] = name.toLowerCase();
  19. } );
  20. ...
  21. type: function( obj ) {
  22. // return null
  23. if ( obj == null ) {
  24. return obj + "";
  25. }
  26. // Support: Android <=2.3 only (functionish RegExp)
  27. // 支持: Android <= 2.3 版本 ?(functionish RegExp)
  28. // 如果是个函数的话,返回class2type[{}.toString.call(obj)]
  29. return typeof obj === "object" || typeof obj === "function" ?
  30. class2type[ toString.call( obj ) ] || "object" :
  31. typeof obj;
  32. },
  33. ...

On IE 6, 7, and 8 a lot of host objects are objects and not functions. For example: typeof alert === 'object'

This stnds since the beginning of JavaScript typeof null === 'object';

Regular expressions

在一些正则中,低版本的浏览器可能会不兼容es5

  1. typeof /s/ === 'function'; // Chrome 1-12 不遵循 5.1
  2. typeof /s/ === 'object'; // Firefox 5+ 遵循 ECMAScript 5.1

关于javascript 里面类型的判断的更多相关文章

  1. Javascript中类型的判断

    数据类型的判断有这么几种方式 1.一元运算符 typeOf 2.关系运算符 instanceof 3.constructor 属性 4.prototype属性 一.typeof typeof的返回值有 ...

  2. javascript学习-类型判断

    javascript学习-类型判断 1.类型判断的的武器 javascript中用于类型判断的武器基本上有以下几种: 严格相等===,用来判断null,undefined,true,false这种有限 ...

  3. javascript 类型的判断

    在平常写js代码,类型判断必不可少,那么我们常见有哪几种?看到了标题,先不看你会想到那些方法 ,常用呢些呢?那么今天我自己总结一些判断类型的判断,如有错,万望告知! 1:typeof 常用这种方法不错 ...

  4. javascript增强typeof 对复杂类型的判断

    js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Undefined,Null),和一种复杂数据类型(Object). typeof 由于js中的变量是松散类型的 ...

  5. javascript 操作符类型隐性转换

    javascript 操作符类型隐性转换 (一).一元操作符只能操作一个值的操作符叫做一元操作符1.递增和递减操作符a. 在应用于一个包含有效数字字符的字符串时,先将其转换为数字值,再执行加减1的操作 ...

  6. 在JavaScript中,如何判断数组是数组?

    如果你没有注意过这个问题,那么这个标题应该会让你感到困惑,判断数据类型这么基础的问题能有什么坑呢? 少年,你不能太天真了,我们朝夕面对的这门语言,可是JavaScript呀,任何你觉得已经习以为常的东 ...

  7. JavaScript的类型体系

    一:总体的类型系 基本类型:数字类型(number),字符串类型(string),布尔类型(boolean); 复合类型:对象(对象,函数,数组等); 无类型:null(有定义),undefined( ...

  8. JavaScript中instanceof的判断依据

    读jquery源码的时候,发现作者为了让创建jquery对象更容易使用了用函数返回对象的方法 jQuery = function( selector, context ) { return new j ...

  9. JavaScript 基础类型,数据类型

    1.基础类型:undefined,null,Boolean,Number,String,Symbol Undefined类型:一个没有被赋值的变量会有个默认值undefined; Null类型:nul ...

随机推荐

  1. 使用k-近邻算法改进约会网站的配对效果

    ---恢复内容开始--- < Machine Learning 机器学习实战>的确是一本学习python,掌握数据相关技能的,不可多得的好书!! 最近邻算法源码如下,给有需要的入门者学习, ...

  2. Win8驱动测试模式

    打开驱动测试模式(保存成bat文件,双击执行) bcdedit /set testsigning on pause 执行完成后,看见提示操作成功的提示,之后我们重启一下,再次进入系统,在桌面的右下角会 ...

  3. sikuli+java实例

      新建java工程,导入sikuli-script.jar包 public class TestSikuli { public static void openPage() throws FindF ...

  4. 如何获取SQL Server 2008数据库数据文件的位置

    在SQL Server中,要获取数据库数据文件的物理位置,有三种方法: sp_helpdb bright name          filename                        f ...

  5. 动手学servlet(一) 第一个servlet程序

    1.文件>新建>动态WEB项目 "javaeedemo">在Java Resource的src下新建包“servletdemo”,包下新建一个类“MyServet ...

  6. HTML控件-Select

    从今天开始,编写对于html控件的特性的探索文章,会广泛的引用网络的资源,所以本文的版权属于广大人民群众,欢迎转载,也同样禁止商业应用. [高手勿喷,标签页点击红色叉叉] select控件有一个特性: ...

  7. ios 对齐属性

    四个容易混淆的属性:1. textAligment : 文字的水平方向的对齐方式1> 取值NSTextAlignmentLeft      = 0,    // 左对齐NSTextAlignme ...

  8. WebsitePanel 2.1.0beta配置部分

    到http://www.websitepanel.net/downloads/下载好单独安装包作为网站内容运行在IIS7.0上,配置applicationpool为localsystem Websit ...

  9. Unity项目在亚马逊KindleFire设备上旋转不正确的解决方案

    前提:      在亚马逊设备上,总部要求发布的版本必须使用LandscapeLeft方向.按照经验,在UnityPlayerSettings中设置Orientation即可.   问题表现:     ...

  10. 学习练习 java 实例属性 静态属性

    package com.hanqi; public class Test11Car11 { //静态 //实例属性 private int m = 0; //静态属性 //所有实例共有的,在内存里只有 ...