工具函数的封装:判断js数据类型

利用Object.prototype.toString


console.log(Object.prototype.toString.call("hello"));//[object String]
console.log(Object.prototype.toString.call(123));//[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 foo(){}
console.log(Object.prototype.toString.call(new foo()));//[object Object]

封装:

// 判断一个类型, 返回true/false
const isType = type => obj => Object.prototype.toString.call(obj) === `[object ${type}]`;
const isNumber = isType('Number')
const isArray = isType('Array');// 
const isSymbol = isType1('Symbol');
isArray([1,2,3]) ;// true
isSymbol(Symbol()); // true

使用:

在组件复用的时候,给组件传进去的字段相同,但字段的值未必相同,比如item.commentDate可能是时间戳34324702347, 也可能是时间字符串‘2020-07-21 12: 34: 09’, 所以这里根据判断类型显示,如果是时间戳就对时间戳格式化处理,如果是时间字符串就正常显示。

            {isNumber(item.commentDate) ? utils.formatTimeStamp(item.commentDate, 'YYYY-MM-DD HH:mm:ss') : item.commentDate}

 

你可能感兴趣的:(工具函数)