Object.prototype.toString.call()和typeof()区别

js中判断数据类型都知道用tyoeof(),但是他只能判断object,boolean,function,string,number,undefined还有symbol(es6新增)这几种初步类型,比如new Date和null,它就只能是object。

console.log(typeof(new Date())); // object

console.log(typeof(null));// object

console.log(typeof([1,2,3]));// object

那么,我们使用Object.prototype.toString.call(),就可以做到

console.log(Object.prototype.toString.call("jerry"));//[object String]

console.log(Object.prototype.toString.call(12));//[object Number]

console.log(Object.prototype.toString.call(true));//[object Boolean]

console.log(Object.prototype.toString.call(undefined));//[object Undefined]

console.log(Object.prototype.toString.call(null));//[object Null]

console.log(Object.prototype.toString.call({name: "jerry"}));//[object Object]

console.log(Object.prototype.toString.call(function(){}));//[object Function]

console.log(Object.prototype.toString.call([]));//[object Array]

console.log(Object.prototype.toString.call(new Date));//[object Date]

console.log(Object.prototype.toString.call(/\d/));//[object RegExp]

function Person(){}; console.log(Object.prototype.toString.call(new Person));//[object Object]

判断console.log(Object.prototype.toString.call(new Person) === '[object Object]'); //true

 

posted @ 2020-09-14 14:47  叫我汤先森  阅读(393)  评论(0)    收藏  举报