JavaScript数据类型判断的方法介绍(代码)


本文摘自PHP中文网,作者不言,侵删。

本篇文章给大家带来的内容是关于JavaScript数据类型判断的方法介绍(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1、 常用的typeof

对于array、object、null的判断是不友好的,可以看下图的执行结果。

2131714394-5c9c7a42e3304_articlex.png

1

2

3

4

5

6

7

8

9

10

11

12

13

14

var obj = {

  number:123,

  string: '123',

  bool: true,

  obj: {},

  arr: [],

  n: null,

  undef: undefined,

  fn: function () {}

}

 

for(key in obj) {

  console.log(key + ": " + typeof obj[key])

}

2. instanceof

instanceof测试构造函数的prototype属性是否出现在对象的原型链中的任何位置。
如果你了解原型链,你会知道原型链的复杂性,instanceof得到的值并不是固定不变的,它会沿着原型链查找,最明显的是所有的基本数据类型都继承与Object.protype.

1

2

[任何数据类型] instanceof Object

> true

如下图:

1332941484-5c9c7e8e904c5_articlex.png

3.最终方案:Object.prototype.toString.call()

下面是兼容性方案最好、最全面、也是最有效的:
下面有两种实现方式(原型方法和全局方法),可以根据自己的需要选择。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

(function () {

  function isType(type,data) {

    // data是全局方法时使用的,原型方法可不填

    return Object.prototype.toString.call(data || this) === '[object ' + type + ']'

  }

  // 全局方法支持null和undefined

  // window.isType = isType

 

  // 添加到数据类型的原型中,不支持null和undefined

    Object.defineProperty(Object.prototype,'isType',{

      value:isType,

      writable:true,

        enumerable:false,

        configurable:true

    });

})()

使用方式:

1

2

3

4

5

6

var str = 'abc';

// 全局方法

isType('String', str) // True

 

// 原型方法

str.isType('String')

测试代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

var obj = {

  test: {

    number:123,

    string: '123',

    obj: {},

    bool: true,

    arr: [],

    n: null,

    undef: undefined,

    fn: function () {

 

    }

  }

}

// 原型方法不支持null和undefined,请用“===”

console.log(obj.test.number.isType('Number'))

console.log(obj.test.number.isType('String'))

 

console.log(obj.test.string.isType('String'))

console.log(obj.test.string.isType('Number'))

 

console.log(obj.test.obj.isType('Object'))

console.log(obj.test.obj.isType('Array'))

 

console.log(obj.test.arr.isType('Array'))

console.log(obj.test.arr.isType('Object'))

 

 

console.log(obj.test.fn.isType('Function'))

console.log(obj.test.fn.isType('Object'))

2574942782-5c9c8f453f9c7_articlex.png

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的JavaScript视频教程栏目!!!

以上就是JavaScript数据类型判断的方法介绍(代码)的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

es6-promise源码的分析

javascript中如何声明变量

bootstrap请求javascript失败是怎么回事

javascript怎么删除类

javascript打包是什么意思

javascript字符串大小写怎么转换

javascript中var,let与const的区别是什么?

express中间件body-parser的实现方法

怎么用js获取年月日

vuex中映射的完整指南

更多相关阅读请进入《javascript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...