记阮一峰---JavaScript 标准参考教程之标准库-Object对象
在看到阮大神的-标准库-Object对象时 有个 类型判断类型 方法可能以后会用到。特此记录一下
4.3:toString()的应用:判断数据类型
Object.prototype.toString
方法返回对象的类型字符串,因此可以用来判断一个值的类型。
var o = {};
o.toString() // "[object Object]"
上面代码调用空对象的toString
方法,结果返回一个字符串object Object
,其中第二个Object
表示该值的构造函数。这是一个十分有用的判断数据类型的方法。
实例对象可能会自定义toString
方法,覆盖掉Object.prototype.toString
方法。通过函数的call
方法,可以在任意值上调用Object.prototype.toString
方法,帮助我们判断这个值的类型。
Object.prototype.toString.call(value)
不同数据类型的Object.prototype.toString
方法返回值如下。
- 数值:返回
[object Number]
。 - 字符串:返回
[object String]
。 - 布尔值:返回
[object Boolean]
。 - undefined:返回
[object Undefined]
。 - null:返回
[object Null]
。 - 数组:返回
[object Array]
。 - arguments对象:返回
[object Arguments]
。 - 函数:返回
[object Function]
。 - Error对象:返回
[object Error]
。 - Date对象:返回
[object Date]
。 - RegExp对象:返回
[object RegExp]
。 - 其他对象:返回
[object Object]
。
也就是说,Object.prototype.toString
可以得到一个实例对象的构造函数。
Object.prototype.toString.call(2) // "[object Number]"
Object.prototype.toString.call('') // "[object String]"
Object.prototype.toString.call(true) // "[object Boolean]"
Object.prototype.toString.call(undefined) // "[object Undefined]"
Object.prototype.toString.call(null) // "[object Null]"
Object.prototype.toString.call(Math) // "[object Math]"
Object.prototype.toString.call({}) // "[object Object]"
Object.prototype.toString.call([]) // "[object Array]"
var type = function (o){
var s = Object.prototype.toString.call(o);
return s.match(/\[object (.*?)\]/)[1].toLowerCase();
};
type({}); // "object"
type([]); // "array"
type(5); // "number"
type(null); // "null"
type(); // "undefined"
type(/abcd/); // "regex"
type(new Date()); // "date"
['Null','Undefined','Object','Array','String','Number','Boolean','Function','RegExp'].forEach(function (t) {
type['is' + t] = function (o) {
return type(o) === t.toLowerCase();
};
});
type.isObject({}) // true
type.isNumber(NaN) // true
type.isRegExp(/abc/) // true
记阮一峰---JavaScript 标准参考教程之标准库-Object对象的更多相关文章
- JavaScript 标准参考教程(alpha) 阮一峰
JavaScript 标准参考教程(alpha)http://javascript.ruanyifeng.com/#introduction
- Canvas API -- JavaScript 标准参考教程(alpha)
Canvas API -- JavaScript 标准参考教程(alpha) Canvas API
- JavaScript 核心参考教程 内置对象
这个标准基于 JavaScript (Netscape) 和 JScript (Microsoft).Netscape (Navigator 2.0) 的 Brendan Eich 发明了这门语言,从 ...
- Javascript标准参考教程学习记录
教程:http://javascript.ruanyifeng.com/ 基本语法 - 函数 1.函数名的提升 JavaScript引擎将函数名视同变量名,采用function命令声明函数时,整个函数 ...
- *JavaScript标准参考教程 - 阮一峰
参考 页向对象编程的模式(继承&模块化)
- Javascript 标准参考教程
http://javascript.ruanyifeng.com/grammar/array.html
- 阮一峰---javascript系列
2013.05.11:如何做到 jQuery-free?(29条评论) 2013.01.23:JavaScript Source Map 详解(14条评论) 2013.01.14:Javascript ...
- 阮一峰:Flex 布局教程
http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html http://www.ruanyifeng.com/blog/2015/07/flex ...
- Js学习(7)标准库-object对象
Js原生提供Object对象,O大写,所有的其他对象都继承自Object对象,都是Object的实例 Object对象的原生方法分为两类: 本身的方法:直接定义在Object对象的方法 实例方法:定义 ...
随机推荐
- HIT 2255 Not Fibonacci(矩阵高速幂)
#include <iostream> #include <cstdio> #include <cstring> using namespace std; cons ...
- js实现小时钟,js中Date对象的使用?
介绍一下js中Date对象的使用 dateObj = new Date() dateObj = new Date(dateValue) dateObj = new Date(year,month,da ...
- Function的一些结论与eval函数.
1.1 函数的创建方式 1 函数声明 2 函数表达式 3 new Function // 1 function foo() {} // 2 var foo = function() {}; // 3 ...
- POJ 3189 二分+Dinic
题意: 思路: 二分跨度 枚举最低座次 建图:源点向每头牛连边权为1的边 每头牛向当前枚举的B的区间这段连上边权为1的边 所有座次向汇点连边权为牛棚容量的边 判判流量是不是等于n 一开始写得是直接枚举 ...
- C++中友元类使用场合
在C++中我们可以將函数定义成类的友元函数,这样在函数中就可以访问类的私有成员.与函数相同,类也可以作为另一个类的友元类,在友元类中可以访问另外一个类的所有成员. 声明友元类的方法很简单,只需在类中写 ...
- JS实现页面跳转 浏览器地址栏保持不变
JS实现页面跳转 浏览器地址栏保持不变 在公司内部框架中,发现点击超链接,页面发生跳转,而浏览器地址栏URL始终保持不变.分析其实现机制,响应A标签onclick事件,通过Ajax向服务器端发送htt ...
- 多路径软件常用操作(MPIO)
一:查看存储盘的路径 1. 查看MPIO的存储盘的路径 # lspath (适用于所有存储的MPIO路径查询) # mpio_get_config -Av (适用于DS3K/DS4K的MPIO路径查询 ...
- js中split,splice,slice方法之间的差异。
首先我们先来林格斯双击翻译一下: split 劈开, 使分裂: splice 接合; 使结合: slice 切成薄片, 切: 我先是这么区分的:这三个方法最后一个字母是t的是字符串方法,是e的 ...
- 小试VS 2017 开发Python Django项目过程一
一.新建项目python ->django web 项目 (选择带bootstrap风格与twwriter)项目名称iepiececomputing (ie计件计算)跳出窗体 -> 添加虚 ...
- CSUOJ 1551 Longest Increasing Subsequence Again
1551: Longest Increasing Subsequence Again Time Limit: 2 Sec Memory Limit: 256 MBSubmit: 75 Solved ...