浅析Js中数据类型推断的要领

1.typeof操作符返回一个字符串,指导未经盘算的操作数的范例。

语法:type opreand
参数: opreand是一个表达式,示意对象或许原始值,其范例将被返回。
形貌:
    范例                         效果
    Undefined                    "undefined"
    Null                         "object"
    Boolean                      "boolean"
    Number                       "number"
    String                       "string"
    Symbol(ECMAScript 6 新增)    "symbol"
    函数对象                      "function"
    任何其他对象                  "object"

2.typeof 关于一些特别数据时的表现

typeof (new Number(1));          //效果并非设想中的"number"而是"object"
typeof (new String("hello"));     //同理效果仍然是"object"
tyoeof (new Boolean(true));       //返回"object"

typeof null;                      //返回也为"object"

3.instanceof 运算符用来测试一个对象在其原型链中是不是存在一个组织函数的 prototype 属性。

语法:object instanceof constructor
参数:object 要检测的对象   constructor   某个组织函数
经由过程这个运算符我们就能够用来检测object真正的数据范例
    (new Number(1));       instanceof Number    //true
    (new Array("2,3"));    instanceof Array     //true
    (new String("hello")); instanceof String    //true
然则如果是null的话,彷佛就没办法处理了呢。我们能够提早运用对象的toString要领推断是不是为null

4.更好的做法是借用Object.prototype.toString

Object.prototype.toString.call(1);              // "[object Number]"
Object.prototype.toString.call(new Number(1));  // "[object Number]"
Object.prototype.toString.call("hello");        // "[object String]"

Object.prototype.toString.call(function(){});   // "[object function]"
Object.prototype.toString.call(null);           // "[object Null]"

所以我们能够封装一个应用Object.prototype.toString来推断数据范例的函数。

  function classOf(obj) {
      return Object.prototype.toString.call(obj).slice(8, -1);
  };
  classOf(null); //'Null'
   
    原文作者:zer0_li
    原文地址: https://segmentfault.com/a/1190000009703199
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞