资讯专栏INFORMATION COLUMN

浅析Js中数据类型判断的方法

Worktile / 1142人阅读

摘要:语法参数要检测的对象某个构造函数通过这个运算符我们就可以用来检测真正的数据类型但是如果是的话,好像就没办法解决了呢。

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"
   

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/83394.html

相关文章

  • 浅析js工厂函数、构造函数

    摘要:首先,说下工厂函数。应对某些场景,工厂函数并不能满足我们,如我需要判断树是不是动物类型你会发现你并没办法。这时候构造函数就出现了我的性别是猴子母猴子我的性别是母跟工厂函数很像,只是没有了创建对象和,并且都用添加属性。 首先,说下工厂函数。顾名思义,就好比一个工厂一样,可以批量制造某种类型的东西。其实说白了就是封装了个方法减少重复工作,相信稍微有点码龄的人都懂。上代码: function...

    _DangJin 评论0 收藏0
  • 浅析Vue响应式原理(二)

    摘要:响应式原理之之前简单介绍了和类的代码和作用,现在来介绍一下类和。对于数组,响应式的实现稍有不同。不存在时,说明不是响应式数据,直接更新。如果对象是响应式的,确保删除能触发更新视图。 Vue响应式原理之Observer 之前简单介绍了Dep和Watcher类的代码和作用,现在来介绍一下Observer类和set/get。在Vue实例后再添加响应式数据时需要借助Vue.set/vm.$se...

    rockswang 评论0 收藏0
  • Vue.nextTick浅析

    摘要:浅析的特点之一就是响应式,但数据更新时,并不会立即更新。尽管已经更新,但新增的元素并不立即插入到中。实际在中,执行了,这也是自动绑定到执行上下文的原因。在内,使用数组保存回调函数,表示当前状态,使用函数来执行回调队列。 Vue.nextTick 浅析 Vue 的特点之一就是响应式,但数据更新时,DOM 并不会立即更新。当我们有一个业务场景,需要在 DOM 更新之后再执行一段代码时,可以...

    MartinDai 评论0 收藏0
  • 浅析Object.prototype.toString()

    摘要:一直很奇怪为什么可以通过判断各数据的类型,带着这个疑问,查看了一些资料。与是两个不同的方法,他们返回的值是不一样的。需要调用原型对象上的去判断类型 一直很奇怪为什么可以通过Object.prototype.toString()判断各数据的类型,带着这个疑问,查看了一些资料。 1.Object.prototype.toString()判断原理 那么当我们调用这个方法时,具体会做那些操作呢...

    honhon 评论0 收藏0
  • 浅析前端上传

    摘要:项目上也用到很多上传文件的地方,七牛云,阿里云,讯飞上传都接触过,所以在这里做一个记录,总结一下前端上传的几种方式。类型的文件名七牛云上传浅析是一个基于七牛开发的前端。 showImg(https://segmentfault.com/img/bVbvibu?w=1920&h=1080); 图片,音频,视频等等这几种常见的资源类型,如果需要从前端上传到服务端,有几种方式呢?不妨回顾一下...

    terro 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<