js中通过Object.prototype.toString方法----精确判断对象的类型
来源:互联网 发布:淘宝国际转运不支持 编辑:程序博客网 时间:2024/05/04 08:35
在 JavaScript 里使用 typeof 来判断数据类型,只能区分基本类型,即 “number”,”string”,”undefined”,”boolean”,”object” 五种。
对于数组、函数、对象来说,其关系错综复杂,使用 typeof 都会统一返回 “object” 字符串。
要想区别对象、数组、函数单纯使用 typeof 是不行的,JavaScript中,通过Object.prototype.toString方法,判断某个对象值属于哪种内置类型。
例子:
var arr = [];
console.log(Object.prototype.toString.call(arr))
结果:
"[object Array]"
在ES3中,Object.prototype.toString方法的规范如下:
15.2.4.2 Object.prototype.toString()
在toString方法被调用时,会执行下面的操作步骤:
1. 获取this对象的[[Class]]属性的值。
2. 计算出三个字符串"[object ", 第一步的操作结果Result(1), 以及 "]"连接后的新字符串。
3. 返回第二步的操作结果Result(2)。
[[Class]]是一个内部属性,所有的对象(原生对象和宿主对象)都拥有该属性.在规范中,[[Class]]是这么定义的:
内部属性 描述
[[Class]] 一个字符串值,表明了该对象的类型。
其过程简单说来就是:1、获取对象的类名(对象类型)。2、然后将[object、获取的类名、]组合并返回。
由于 JavaScript 中一切都是对象,任何都不例外,对所有值类型应用 Object.prototype.toString.call() 方法结果如下:
console.log(Object.prototype.toString.call(123)) //[object Number]
console.log(Object.prototype.toString.call('123')) //[object String]
console.log(Object.prototype.toString.call(undefined)) //[object Undefined]
console.log(Object.prototype.toString.call(true)) //[object Boolean]
console.log(Object.prototype.toString.call({})) //[object Object]
console.log(Object.prototype.toString.call([])) //[object Array]
console.log(Object.prototype.toString.call(function(){})) //[object Function]
判断是否为函数
function isFunction(it) {
return Object.prototype.toString.call(it) === '[object Function]';
}
判断是否为数组:
function isArray(o) {
return Object.prototype.toString.call(o) === '[object Array]';
}
typeof是用来检测基本类型的最佳工具。
检测引用类型可以使用 instanceof,它返回布尔值。
而Object.prototype.toString.call对于检测基本类型和引用类型是通吃的。
if (!Array.isArray) { /** * 判断一个对象是否是数组。 * @param {Object} obj 要判断的对象。 * @returns {Boolean} 如果 @obj 是数组则返回 @true,否则返回 @false。 * @example * Array.isArray([]); // true * * Array.isArray(document.getElementsByTagName("div")); // false * * Array.isArray(new Array); // true * @since ES5 */ Array.isArray = function (obj) { return Object.prototype.toString.call(obj) === "[object Array]"; };}
- js中通过Object.prototype.toString方法----精确判断对象的类型
- js中通过Object.prototype.toString方法----精确判断对象的类型
- js中通过Object.prototype.toString方法----精确判断对象的类型
- js中精确判断对象类型--关于typeof 和Object.prototype.toString方法的区别
- js中通过Object.prototype.toString方法----精判断对象的类型
- js判断对象类型 typeof与Object.prototype.toString.call方法的区别
- Object.prototype.toString.call 判断一个对象的类型
- js通过Object.prototype.toString.call()精确判断数据类型后并复制数据
- 判断javascrit 类型 Object.prototype.toString方法的原理
- 判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
- js进行类型判断 Object.prototype.toString.call()
- js中利用Object.prototype.toString.call()判断数据类型
- 判断变量的类型(typeof、instanceof、Object.prototype.toString)
- Object.prototype.toString.call()进行类型判断
- Object.prototype.toString.call() 进行类型判断
- Object.prototype.toString跨框架判断类型
- Object.prototype.toString.call() 区分对象类型
- Object.prototype.toString.call() 区分对象类型
- Java网络编程第一章
- VM无法获取 vmci 驱动程序版本句柄无效解决办法
- AsyncTask的小巧用法
- 跨服务器session共享
- CentOS中开机tomcat远程调试
- js中通过Object.prototype.toString方法----精确判断对象的类型
- hdu 2015偶数求和用栈和队列的思想做
- 腾讯云大数据套件Hermes-MR索引插件使用总结
- jQuery导航下拉菜单
- 高级程序员发展方向
- SQL DELETE 语句及使用表名使用别名的方法
- 第九周项目3-稀疏矩阵的三元组表示的实现及应用(1)
- 架构设计:系统存储(12)——MySQL主从方案业务连接透明化(中)
- 【python学习-02】socket---tcp/udp