第九天

  • 题目来源: 前端每日知识3+1

Javascript题目

题目 : 写一个判断数据类型的方法(js)

问题解答

解题思路

  • 写一个判断数据类型的方法

Object.prototype.toString方法

  1. function type(obj) {
  2. // return Object.prototype.toString.call(obj).replace(/\[object\s|\]/g, ''); // apply方法或者 call方法都可以将改变this的指向
  3. // return Object.prototype.toString.call(obj).split(' ')[1].replace(']',''); // split方法
  4. // return Object.prototype.toString.call(obj).slice(8,-1); // slice方法
  5. // return Object.prototype.toString.call(obj).substr(8).split(']')[0]; // substr方法
  6. // return Object.prototype.toString.call(obj).substring(8).replace(']',''); // substring方法
  7. return Object.prototype.toString.call(obj).match(/(?<=\[object\s)(\w*)(?=\])/g)[0]; // substring方法
  8. }
  9. console.log(type('')) //"String"
  10. console.log(type(1)) //"Number"
  11. console.log(type([])) //"Array"
  12. console.log(type(false)) //"Boolean"
  13. console.log(type(NaN)) //"Number"
  14. console.log(type(undefined)) //"Undefined"
  15. console.log(type(null)) //"Null"
  16. console.log(type(function fn() {})) //"Function"
  17. console.log(type(/d/g)) // "RegExp"
  18. console.log(type(Symbol())); //Symbol
  19. console.log(type(Math)); //Math
  20. console.log(type(window)); // Window
  21. console.log(type(Promise)); // Promise

instanceof方法

知识扩展

  • typeofinstanceof方法的解释详解
  • 基本数据类型: String, Boolean, Number, Null, Undefined, Symbol【数据类型
  • 引用数据类型: Object 里面包含的 function、Array、Date、RegExp
  • typeof: 检测数据类型的运算符 用于检测基本数据类型
  • instanceof: 检测某个实例是否属于这个类, 用于检测引用数据类型
  • constructor 获取当前实例的构造器
  • Object.prototype.toString.call: 获取当前实例的所属类信息