//判断是否为函数
function isFunction(it) {return Object.prototype.toString.call(it) === '[object Function]';
}//判断是否为数组
function isArray(it) {return Object.prototype.toString.call(it) === '[object Array]';
}//判断各种类型的基函数
function isType(type) {return function(obj) {return Object.prototype.toString.call(obj) === "[object " + type + "]";}
}
//借助以下四个方法来判断: 比如 isObject({a:1, b:2})
var isObject = isType("Object");
var isString = isType("String");
var isArray = Array.isArray || isType("Array");
var isFunction = isType("Function");

ECMAScript 3:

在Object.prototype.toString方法被调用时,会执行以下的操作步骤:

  1. 获取this对象的[[Class]]属性的值;

  2. 计算出"[object ", 第1步的操作结果Result(1),以及 "]"连接后的新字符串.

  3. 返回第2步的操作结果Result(2).

ECMAScript 5:

在Object.prototype.toString方法被调用时,会执行以下的操作步骤:

  1. 如果this的值为undefined,返回"[object Undefined]".

  2. 如果this的值为null,返回"[object Null]".

  3. O成为调用ToObject(this)的结果.

  4. class成为O的内部属性[[Class]]的值.

  5. 返回"[object ",class, 以及 "]"连接后的新字符串.

兼容性:

  为了兼容ie6这类比较古老的游览器,Object.prototype.toString.call(obj) 通常用作"Boolean Number String Function Array Date RegExp Object"这8种数据类型的判断。

  null 和 undefined 建议不要用Object.prototype.toString.call(obj)来判断。

转载于:https://www.cnblogs.com/langtao/archive/2013/03/15/2961521.html

Object.prototype.toString方法相关推荐

  1. JavaScript中Object.prototype.toString方法的原理

    在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. <一>, ECMAScript 3  1. 在E ...

  2. JavaScript:Object.prototype.toString方法的原理

    在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. var arr = []; console.log(Obje ...

  3. 由Object.prototype.toString.call( )引发关于toString( )方法的思考

    引言 前端面试中有这么一道经典的问题,如何判断一个对象是否为数组? ES5提供了一个确定对象是否为数组的函数 Array.isArray(object); 复制代码 其中,object是必须的,表示要 ...

  4. JavaScript:Object.prototype.toString进行数据类型判定

    在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. var arr = []; console.log(Obje ...

  5. 关于 Object.prototype.toString.call() 方法

    Javascript中可通过typeof来获取对象的类型,但是对象如果是内置的继承Object的类型,typeof也只能返回object,不能获取对象的具体类型,如Date,Array,Boolean ...

  6. ECMA262 Edition5 Object,Object的属性和方法,Object.prototype的方法.

    ES5,为Object添加了一批方法.了解这些方法,可以更好的理解属性描述符的应用. 所以还是很有必要读一读的.另外,这些方法用起来还是蛮给力的. 暂时对于ES5,就只放出这些吧,希望对大家有所帮助. ...

  7. Object.prototype.toString.call()检测

    在日常开发中,我们经常需要判断某个对象是否是数组类型的,在js中检测对象类型的常见的方法有几种: 1.typeof操作符.对于Function.String.Number.Undefined这几种类型 ...

  8. 为什么用Object.prototype.toString.call(obj)检测对象类型?

    37 Essential JavaScript Interview Questions*,中有一道javascript题: 使用 typeof bar === "object" 检 ...

  9. JS中的toString、Object.toString、Object.prototype.toString

    不同类型值的toString方法: //Number const num = 123; num.toString(); // '123' (123).toString(); // '123' 整数必须 ...

  10. 【javaScript】Object.prototype.toString.call() 、 instanceof 以及 Array.isArray() 区别与优化层面的比较

    1. Object.prototype.toString.call() 每一个继承 Object 的对象都有 toString 方法,如果 toString 方法没有重写的话,会返回 [Object ...

最新文章

  1. 介绍一款比Android原生模拟器还要快的模拟器Genymotion(转)
  2. Jackson使用示例:将Java对象转换成Map
  3. JQuery: 实现筛选功能
  4. AT4513-[AGC030D]InversionSum【dp】
  5. hitchhiker部署_《 Hitchhiker的Python机器学习指南》
  6. CV之 HOG特征描述算子-行人检测
  7. js 控制 Windows Media Player
  8. python 蓝牙开发_基于python实现蓝牙通信代码实例
  9. Android 11.0 12.0拨打接听电话默认开启免提
  10. autocad html 插件,cad插件有哪些
  11. Java是什么?Java能干什么工作?
  12. php服务器搬迁失败原因
  13. 人工智能工程化丨中小企业AI中台落地指南
  14. 无所不能的NumPy:我用它弹奏出了CD音质的吉他名曲“爱的罗曼史”
  15. 音视频技术开发周刊 | 164
  16. 【DM】Combating Web Spam with TrustRank - 用TrustRank对抗网络垃圾邮件
  17. 【论文阅读】TimbreTron : A WaveNet (Cycle GAN(CQT(audio ))) pipeline for musical timbre transfer
  18. 勇敢做自己,女神节快乐!
  19. 小程序动画-循环放大缩小的动画(一闪一闪的)
  20. 百问网7天物联网记录(二)

热门文章

  1. Linux系统编程 -- 为什么需要进程间通信??
  2. 引用springboot starter 的springboot项目无法引用 springboot starter依赖的项目中的类
  3. 【渝粤教育】国家开放大学2018年春季 0049-21T法律文书 参考试题
  4. 【渝粤教育】国家开放大学2019年春季 1087数学分析专题研究 参考试题
  5. 【渝粤教育】国家开放大学2018年春季 0032-21T农业经济学 参考试题
  6. 最大熵图像复原方法原理(附完整代码)
  7. 向量的表示及协方差矩阵
  8. python的单元测试unittest模块
  9. pytest文档4-测试用例setup和teardown
  10. mybatis 中的![CDATA[ ]]