资讯专栏INFORMATION COLUMN

判断数据类型

dongfangyiyu / 2783人阅读

摘要:判断一个数据是否是数组,在以往的实现中,可以基于鸭子类型的概念来判断,比如判断这个数据有没有属性,有没有方法或者方法等。所以我们可以编写一系列的函数。代码如下输出我们还可以用循环语句,来批量注册这些函数输出输出

判断一个数据是否是数组,在以往的实现中,可以基于鸭子类型的概念来判断,比如判断这个数据有没有length 属性,有没有sort方法或者slice 方法等。但更好的方式是用Object.prototype.toString来计算。

Object.prototype.toString.call(obj)返回一个字符串,比如Object.prototype.toString.call([1,2,3])总是返回"[objectArray]",而Object.prototype.toString.call(“str”)总是返回"[objectString]"。所以我们可以编写一系列的isType 函数。代码如下:

var isString = function( obj ){
    return Object.prototype.toString.call( obj ) === "[object String]";
};
var isArray = function( obj ){
    return Object.prototype.toString.call( obj ) === "[object Array]";
};
var isNumber = function( obj ){
    return Object.prototype.toString.call( obj ) === "[object Number]";
};
var isType = function( type ){
    return function( obj ){
    return Object.prototype.toString.call( obj ) === "[object "+ type +"]";
}
};
var isString = isType( "String" );
var isArray = isType( "Array" );
var isNumber = isType( "Number" );
    console.log( isArray( [ 1, 2, 3 ] ) ); // 输出:true

我们还可以用循环语句,来批量注册这些isType 函数:

var Type = {};
    for ( var i = 0, type; type = [ "String", "Array", "Number"][ i++ ]; ){
        (function( type ){
            Type[ "is" + type ] = function( obj ){
                return Object.prototype.toString.call( obj )==="[object "+ type +"]";
            }
        })( type )
    };
Type.isArray( [] ); // 输出:true
Type.isString( "str" ); // 输出:true

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

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

相关文章

  • 细数判断数据类型的各种方法

    摘要:可用于判断多种数据类型基本数据类型和内置对象,然而对于一些自定义构造函数生成的对象就不能进行判断了。判断是不是所有数据类型中,只有不等于它本身判断数组的方法除了上文提到的三种方法可判断外,还有一个构造函数自带的方法可判断。 数据类型的分类 要想判断数据类型,首先要知道数据类型的分类。数据类型分为基本数据类型和引用数据类型。 基本数据类型 基本数据类型有 五 种,ES6中新加了第 六 种...

    hoohack 评论0 收藏0
  • javascript 数据类型判断 (常见库的数据类型判断源码的分析)

    摘要:对象类型常见的有,,,正则新增自己提供的乐行判断如果不对对象做严格区分使用。的实现使用了原型继承的表示左表达式,表示右表达式,它是用是否等于来判断对象的类型的。常见框架和库的实数据类型判断测试这里将的实现原理抽取出来,用原生实现。 JavaScript一共有六种数据类型,分为原始类型(又名基本类型)和对象类型(又名引用类型) 原始类型有五种,分别为number,string,boole...

    libin19890520 评论0 收藏0
  • js中对数据类型的总结及判断数据类型的各种方法及优缺点

    摘要:最常见的判断方法它的官方解释操作符返回一个字符串,表示未经计算的操作数的类型。另外,是判断对象是否属于某一类型,而不是获取的对象的类型。多个窗口意味着多个全局环境,不同的全局环境拥有不同的全局对象,从而拥有不同的内置类型构造函数。 js中的数据类型 js中只有六种原始数据类型和一个Object: Boolean Null Undefined Number String Symbol ...

    voyagelab 评论0 收藏0
  • 每日 30 秒 ⏱ 数据类型大乱炖

    showImg(https://segmentfault.com/img/remote/1460000018796041?w=900&h=500); 简介 字符串、数字、布尔值、Null、Undefined、对象、数组、函数、判断方法 JavaScript 中有两种数据类型,分别是基本数据类型和引用数据类型: 基本数据类型 引用数据类型 Number、String、Boolean、Null...

    meteor199 评论0 收藏0
  • 如何判断JavaScript的数据类型

    摘要:本文将讲解我目前所知道的判断数据类型的方法。数据类型一共有种除了之外的种属于原始数据类型。等价于问题四的返回值是什么答案。 本文将讲解我目前所知道的判断JavaScript数据类型的方法。JavaScript数据类型一共有7种: Undefined Null Boolean String Symbol Number Object 除了Object之外的6种属于原始数据类型。有时,我...

    jackzou 评论0 收藏0
  • 杂谈数据类型获取

    摘要:如果项目中需要频繁的进行数据类型的判断与获取可以考虑进行封装,简单的处理与已足够。 前言 在js中数据我们经常需要判断或者获取数据类型,大部分时候我们都是通过type加instanceof来组合判断数据类型来实现,大部分代码中对于数据类型的获取处理都比较丑陋,前段时间看了一下Q的源代码中对数据类型的判断与获取处理,看起来相当简洁也比较好用,这篇文章来进行一下发散。 typeof 在js...

    newsning 评论0 收藏0

发表评论

0条评论

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