资讯专栏INFORMATION COLUMN

javascript 判断数据类型的几种方法

phoenixsky / 1659人阅读

摘要:判断数据类型的几种方法一直接返回数据类型字段,但是无法判断数组对象其中都返回二判断某个实例是不是属于原型构造函数三使用判断方法可以改变的指向,那么把方法指向不同的数据类型上面,返回不同的结果最后我们可以定义一个完美的判断数据类型的方法

javascript 判断数据类型的几种方法
一、typeof 直接返回数据类型字段,但是无法判断数组、null、对象

typeof 1
"number"

typeof NaN
"number"

typeof "1"
"string"

typeof true
"boolean"

typeof undefined
"undefined"

typeof null
"object"

typeof []
"object"

typeof {}
"object"

其中 null, [], {}都返回 "object"

二、instanceof 判断某个实例是不是属于原型

// 构造函数
function Fruit(name, color) {
    this.name = name;
    this.color = color;
}
var apple = new Fruit("apple", "red");

// (apple != null)
apple instanceof Object  // true
apple instanceof Array   // false

三、使用 Object.prototype.toString.call()判断

call()方法可以改变this的指向,那么把Object.prototype.toString()方法指向不同的数据类型上面,返回不同的结果

Object.prototype.toString.call(1)
"[object Number]"

Object.prototype.toString.call(NaN);
"[object Number]"

Object.prototype.toString.call("1");
"[object String]"

Object.prototype.toString.call(true)
"[object Boolean]"

Object.prototype.toString.call(null)
"[object Null]"

Object.prototype.toString.call(undefined)
"[object Undefined]"

Object.prototype.toString.call(function a() {});
"[object Function]"

Object.prototype.toString.call([]);
"[object Array]"

Object.prototype.toString.call({});
"[object Object]"

最后我们可以定义一个完美的判断数据类型的方法 _typeof()

function _typeof(obj){
  var s = Object.prototype.toString.call(obj);
  return s.match(/[object (.*?)]/)[1].toLowerCase();
};


_typeof([12,3,343]);
"array"

_typeof({name: "zxc", age: 18});
"object"

_typeof(1);
"number"

_typeof("1");
"string"

 _typeof(null);
"null"

_typeof(undefined);
"undefined"

_typeof(NaN);
"number"

_typeof(Date);
"function"

_typeof(new Date());
"date"

_typeof(new RegExp());
"regexp"

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

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

相关文章

  • javascript数据类型检测几种方式

    摘要:类型检测的方法鸭子类型返回一个字符串,适合函数对象和基本类型的判断返回一个布尔值,判断对象类型基于原型链的方式原理左边对象的原型链原型上是否有右边构造函数的对象属性是基本类型这么多就说明不适合用于基本数据类型注意返回的是 类型检测的方法 typeof instanceof Object.protype.toString constructor duck type:鸭子类型 show...

    Baaaan 评论0 收藏0
  • 判断是否是数组几种方法— (js基础复习第1期)

    摘要:如果网页中包含多个框架,那实际上就存在两个以上不同的全局执行环境,从而存在两个以上不同版本的构造函数。如果你从一个框架向另一个框架传入一个数组,那么传入的数组与在第二个框架中原生创建的数组分别具有各自不同的构造函数。 1. 首先,typeof肯定是不行的 对于一些基本类型,typeof是可以判断出数据类型,但是判断一些引用类型时候,不能具体到具体哪一种类型 再来复习一下typeof的...

    supernavy 评论0 收藏0
  • javascript高级程序设计》第六章 读书笔记 之 javascript对象几种创建方式

    摘要:三种使用构造函数创建对象的方法和的作用都是在某个特殊对象的作用域中调用函数。这种方式还支持向构造函数传递参数。叫法上把函数叫做构造函数,其他无区别适用情境可以在特殊的情况下用来为对象创建构造函数。 一、工厂模式 工厂模式:使用字面量和object构造函数会有很多重复代码,在此基础上改进showImg(https://segmentfault.com/img/bVbmKxb?w=456&...

    xiaotianyi 评论0 收藏0
  • 判断浏览器是否支持 webp 几种解决方法

    摘要:实现方法方法二在服务端根据请求信息判断浏览器是否支持谷歌浏览器上请求图片是这样的浏览器请求图片是这样的在图片请求发出的时候,里有,服务端可以根据里面是否有进行判断。 我们都知道,WebP 是 Google 推出的 WebP 图片格式,它是一种支持有损压缩和无损压缩的图片文件格式,根据Google测试,相同的图片,WebP 格式的图片均能比 PNG,JPG 格式的图片节约不少体积,但是其...

    DobbyKim 评论0 收藏0
  • JavaScript知识点总结

    摘要:参与任何数值计算的结构都是,而且。。面向人类的理性事物,而不是机器信号。达到无刷新效果。的工作原理总是指向一个对象,具体是运行时基于函数的执行环境动态绑定的,而非函数被声明时的环境。原型对象上有一个属性,该属性指向的就是构造函数。 1.JS面向对象的理解 面向对象的三大特点:继承、封装、多态 1、JS中通过prototype实现原型继承 2、JS对象可以通过对象冒充,实现多重继承, 3...

    sean 评论0 收藏0

发表评论

0条评论

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