关于javascript 里面类型的判断
javacript至今共有7中类型
Six data types that are primitives:
- Boolean
- Null
- Undefined
- Number
- String
- Symbol (new in ECMAScript 6)
- Object
demo1:
Function.prototype.toString() 与 Object.prototype.toString()的区别:
var f = function(){};
f.prototype.hasOwnProperty("toString") ; //=>false
Function.prototype.hasOwnProperty("toString"); //=>true
Object.prototype.toString.call(f); //=>[object Function]
Function.prototype.toString(f); //=>"function () {}"
Object.toString.call(f) ; //=>"function () {}"
//注:Object 是由Function构造的,所以Object.toString会这样 ,由Object.__proto__.toString 遍历原型链去找到Function.prototype.toString() 打印,所以会打印function f(){}
//jquery 类型的判断,demo2
{}.toString.call(f); //=>[object Function]
所以,所有由Object.prototype.toString 方法调用的对象,都是会打印出[object Function],[object String] 或者其他类似的格式,而这个结果也常常会被我们用来去判断这是否是一个String 字符串,Array ...
Object.prototype.toString.call([]) === "[object Array]" // ==>"[object Array]"
Object.prototype.toString.call({}) === "[object Array]" // ==>"[object Object]"
demo2:
jQuery.type() 方法的源码解析:
var class2type = {};
// Populate the class2type map
/* 覆盖class2type: 用做返回的的类型
var class2type = {
"[object Boolean]":"boolean",
"[object Number]":"number",
"[object String]":"string",
"[object Function]":"function",
"[object Array]":"array",
"[object Date]":"date",
"[object RegExp]":"regexp",
"[object Object]":"object",
"[object Error]":"error"
}
*/
jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
function( i, name ) {
class2type[ "[object " + name + "]" ] = name.toLowerCase();
} );
...
type: function( obj ) {
// return null
if ( obj == null ) {
return obj + "";
}
// Support: Android <=2.3 only (functionish RegExp)
// 支持: Android <= 2.3 版本 ?(functionish RegExp)
// 如果是个函数的话,返回class2type[{}.toString.call(obj)]
return typeof obj === "object" || typeof obj === "function" ?
class2type[ toString.call( obj ) ] || "object" :
typeof obj;
},
...
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
typeof /s/ === 'function'; // Chrome 1-12 不遵循 5.1
typeof /s/ === 'object'; // Firefox 5+ 遵循 ECMAScript 5.1
关于javascript 里面类型的判断的更多相关文章
- Javascript中类型的判断
数据类型的判断有这么几种方式 1.一元运算符 typeOf 2.关系运算符 instanceof 3.constructor 属性 4.prototype属性 一.typeof typeof的返回值有 ...
- javascript学习-类型判断
javascript学习-类型判断 1.类型判断的的武器 javascript中用于类型判断的武器基本上有以下几种: 严格相等===,用来判断null,undefined,true,false这种有限 ...
- javascript 类型的判断
在平常写js代码,类型判断必不可少,那么我们常见有哪几种?看到了标题,先不看你会想到那些方法 ,常用呢些呢?那么今天我自己总结一些判断类型的判断,如有错,万望告知! 1:typeof 常用这种方法不错 ...
- javascript增强typeof 对复杂类型的判断
js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Undefined,Null),和一种复杂数据类型(Object). typeof 由于js中的变量是松散类型的 ...
- javascript 操作符类型隐性转换
javascript 操作符类型隐性转换 (一).一元操作符只能操作一个值的操作符叫做一元操作符1.递增和递减操作符a. 在应用于一个包含有效数字字符的字符串时,先将其转换为数字值,再执行加减1的操作 ...
- 在JavaScript中,如何判断数组是数组?
如果你没有注意过这个问题,那么这个标题应该会让你感到困惑,判断数据类型这么基础的问题能有什么坑呢? 少年,你不能太天真了,我们朝夕面对的这门语言,可是JavaScript呀,任何你觉得已经习以为常的东 ...
- JavaScript的类型体系
一:总体的类型系 基本类型:数字类型(number),字符串类型(string),布尔类型(boolean); 复合类型:对象(对象,函数,数组等); 无类型:null(有定义),undefined( ...
- JavaScript中instanceof的判断依据
读jquery源码的时候,发现作者为了让创建jquery对象更容易使用了用函数返回对象的方法 jQuery = function( selector, context ) { return new j ...
- JavaScript 基础类型,数据类型
1.基础类型:undefined,null,Boolean,Number,String,Symbol Undefined类型:一个没有被赋值的变量会有个默认值undefined; Null类型:nul ...
随机推荐
- Python进阶01 词典
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 基础教程介绍了基本概念,特别是对象和类. 进阶教程对基础教程的进一步拓展,说明Py ...
- [AIR] 在 Adobe AIR 中为不同屏幕尺寸的多种设备提供支持
转自:http://www.adobe.com/cn/devnet/air/articles/multiple-screen-sizes.html 无论是改编原本在浏览器 Flash Player 中 ...
- 光流算法:关于OpenCV读写middlebury网站给定的光流的代码
Middlebury是每个研究光流算法的人不可能不使用的网站,Middlebury提供了许多标准的测试库,这极大地推进了光流算法的进展.Middlebury提供的标准库,其计算出的光流保存在后缀名为. ...
- js压缩反压缩
JavaScript unpacker and beautifier JavaScript Beautifier http://prettydiff.com/?m=beautify&s=htt ...
- UITableViewCell之微博篇
微博篇 本应用所涉及的知识点: 1.UITableView 中的cell 2.模型的创建 3.MJExtension第三方框架的使用 需求分析 1.界面分析 微博界面 界面控件分析: 整个页面 1.不 ...
- Appium环境搭建Java篇
1.下载.安装JDK&配置Java环境变量 JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html ...
- ceph--磁盘和rbd、rados性能测试工具和方法
我在物理机上创建了5台虚拟机,搭建了一个ceph集群,结构如图: 具体的安装步骤参考文档:http://docs.ceph.org.cn/start/ http://www.centoscn.com/ ...
- Windows Azure - App Services
1. 需要了解的概念:App Service Plan, Resource Group 2. Create an ASP.NET web app in Azure App Services 3. Cr ...
- multi2sim,booksim简介
booksim是周期精确互连网络仿真器,设计用来配合"Principles and Practices of Interconnection Networks"课程教学,仿真器采用 ...
- git大百科
1,命令: git忽略提交文件:git rm --cache .idea/workspace.xml 因为你已经把他加到tracked file里了 用 git rm --cached java/.i ...