JavaScript类型判断的方法介绍(代码示例)


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

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

JS数据类型判断

有的时候需要判断数据类型,应对各种复杂的逻辑判断,先来个咱们最常用的。

1.typeof

typeof操作符返回一个字符串,并表示该变量的类型。

typeof oper / typeof (operand)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

var testString = 'adus',

    testArray = [],

    testBoolean = true,

    testNumber = 0,

    testObject = {},

    testNull = null,

    testUndefined = undefined

     

console.log(typeof testString);//string

console.log(typeof testArray);//object

console.log(typeof testBoolean);//boolean

console.log(typeof testNumber);//number

console.log(typeof testObjec);//object

console.log(typeof testNull);//object

console.log(typeof testUndefined);//undefined

当然不只有上面的这些基础类型,还有下面这些:

Symbol (ECMAScript 6 新增) "symbol"

宿主对象(由JS环境提供) Implementation-dependent

函数对象([[Call]] 在ECMA-262条款中实现了) "function"

咦?有点不对,为什么数组、null等都是object呢???请往下看

Function或者Array这些类型的实例的时候,其实都是基于Object实例进行的一种扩展。只是多了一些特有属性。

在 JavaScript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。对象的类型标签是 0。

由于 null 代表的是 空指针(大多数平台下值为 0x00)。

因此,null的类型标签也成为了 0,typeof null就错误的返回了"object"。(reference)

2.instanceof

instanceof运算符用于测试构造函数的prototype属性是否出现在对象的原型链中的任何位置,通俗点说就是一个变量是否某个对象的实例。

object instanceof constructor

object 要检测的对象 / constructor 构造函数

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

function fnc(){}

var newFnc = new fnc();

console.log(newFnc.__proto__ == fnc.prototype);//true

console.log( newFnc instanceof fnc ) //true

 

 

/*String对象和Date对象都属于Object类型和一些特殊情况*/

 

var simpleStr = "This is a simple string";

var myString  = new String();

var newStr    = new String("String created with constructor");

var myDate    = new Date();

var myObj     = {};

var myNonObj  = Object.create(null);

 

simpleStr instanceof String; // 返回 false, 检查原型链会找到 undefined

myString  instanceof String; // 返回 true

newStr    instanceof String; // 返回 true

myString  instanceof Object; // 返回 true

 

myObj instanceof Object;    // 返回 true, 尽管原型没有定义

({})  instanceof Object;    // 返回 true, 同上

myNonObj instanceof Object; // 返回 false, 一种创建对象的方法,这种方法创建的对象不是Object的一个实例

 

myString instanceof Date; //返回 false

 

myDate instanceof Date;     // 返回 true

myDate instanceof Object;   // 返回 true

myDate instanceof String;   // 返回 false

3.Object.prototype.toString()

每个对象都有一个toString()方法,当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用。默认情况下,toString()方法被每个Object对象继承。如果此方法在自定义对象中未被覆盖,toString() 返回 "[object type]",其中type是对象的类型。

Function.prototype.call( thisArg ) / Function.prototype.apply( thisArg )

传递要检查的对象作为第一个参数,称为thisArg。

1

2

3

4

5

6

7

8

9

var toString = Object.prototype.toString;

 

toString.call(new Date); // [object Date]

toString.call(new String); // [object String]

toString.call(Math); // [object Math]

 

//Since JavaScript 1.8.5

toString.call(undefined); // [object Undefined]

toString.call(null); // [object Null]

在合适的场景用恰当的方法,会很省心,也能保证代码的简洁、健壮。

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

相关阅读 >>

javascript怎么实现字幕滚动

js中怎么换行

javascript怎么清除标签的浮动

javaweb与javascript区别是什么

通过javascript函数生成字符串的所有排列组合

javascript怎么实现页面的刷新

javascript怎么将数组转为json格式

javascript怎么开启

javascript中声明变量的关键字是什么

javascript如何禁止文字的复制

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




打赏

取消

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

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

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

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

评论

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