JS数据类型判断

77 阅读1分钟

typeof(类型) 方法可以正确识别:number,boolean,Symbol,string,undefined,null,function的类型数据,而其他都会返回的是 object。

(判断对象) instanceof (类型) 这个判断方法返回的是boolean类型,虽然可以判断Object、Array,但是假设:判断一个数组,当类型输入object 或者 array 结果都返回为true 。

  • Object.prototype.toString()方法不接收参数,返回表示调用它的对象的值的字符串'[object,object]'。

思想:拿到对象的原始值的字符串类型

function typeOf(obj){
  let res = Object.prototype.toString.call(obj).split(' ')[1]
  .substring(0,res.lenght - 1).toLowerCase()
  //用toString去拿到对象的原始值 '[Object,Array]'
  //这里封装为函数,所以要将this指向参数对象apply()/call()/bind()都可以
  //split('')[1]用来提取toString拿到的整个字符串需要的部分('Array]')
  //因为上一步提取仍右不需要的']' 部分,所以需要使用substring(strat,end)区间提取

  //toLowerCase()为转为小写,该步骤可选
}
function typeOf(obj){
  return Object.prototype.toString.call(obj).slice(8,-1).toLowerCase()
  //前二步骤与方法一相同
  //在提取字符串可以区间提取,因为toString原始值的前8位都是固定的(即:'[Object,')
  //ps:为什么方法一不直接用subString()方法,因为subString()当参数小于0时按0处理,
  		//则需要获取lenght值,
  		//而solice()参数如果大于0,则从前面计数,如果小于0,则从后面计数。
}