第九天
Javascript题目
题目
: 写一个判断数据类型的方法(js)
问题解答
解题思路
Object.prototype.toString方法
function type(obj) {
// return Object.prototype.toString.call(obj).replace(/\[object\s|\]/g, ''); // apply方法或者 call方法都可以将改变this的指向
// return Object.prototype.toString.call(obj).split(' ')[1].replace(']',''); // split方法
// return Object.prototype.toString.call(obj).slice(8,-1); // slice方法
// return Object.prototype.toString.call(obj).substr(8).split(']')[0]; // substr方法
// return Object.prototype.toString.call(obj).substring(8).replace(']',''); // substring方法
return Object.prototype.toString.call(obj).match(/(?<=\[object\s)(\w*)(?=\])/g)[0]; // substring方法
}
console.log(type('')) //"String"
console.log(type(1)) //"Number"
console.log(type([])) //"Array"
console.log(type(false)) //"Boolean"
console.log(type(NaN)) //"Number"
console.log(type(undefined)) //"Undefined"
console.log(type(null)) //"Null"
console.log(type(function fn() {})) //"Function"
console.log(type(/d/g)) // "RegExp"
console.log(type(Symbol())); //Symbol
console.log(type(Math)); //Math
console.log(type(window)); // Window
console.log(type(Promise)); // Promise
instanceof方法
知识扩展
typeof
和 instanceof
方法的解释详解- 基本数据类型: String, Boolean, Number, Null, Undefined, Symbol【数据类型】
- 引用数据类型: Object 里面包含的 function、Array、Date、RegExp
typeof
: 检测数据类型的运算符 用于检测基本数据类型
instanceof
: 检测某个实例是否属于这个类, 用于检测引用数据类型
constructor
获取当前实例的构造器Object.prototype.toString.call
: 获取当前实例的所属类信息