当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 介绍四种判断JS数据类型的方法

介绍四种判断JS数据类型的方法

2018年10月03日  | 移动技术网IT编程  | 我要评论

1、typeof

typeof 是一个操作符,其右侧跟一个一元表达式,并返回这个表达式的数据类型。返回的结果用该类型的字符串(全小写字母)形式表示,包括以下 7 种:number、boolean、symbol、string、object、undefined、function 等。

对于基本类型,除 null 以外,均可以返回正确的结果。

对于引用类型,除 function 以外,一律返回 object 类型。

对于 null ,返回 object 类型。

对于 function 返回  function 类型

2、instanceof

instanceof 是用来判断 a 是否为 b 的实例,表达式为:a instanceof b,如果 a 是 b 的实例,则返回 true,否则返回 false。 在这里需要特别注意的是:instanceof 检测的是原型。

[] instanceof array; // true

[] instanceof object; // true

从 instanceof 能够判断出 [ ].__proto__  指向 array.prototype,而 array.prototype.__proto__ 又指向了object.prototype,最终 object.prototype.__proto__ 指向了null,标志着原型链的结束。

因此,instanceof 只能用来判断两个对象是否属于实例关系, 而不能判断一个对象实例具体属于哪种类型。

3、constructor

当一个函数 f被定义时,js引擎会为f添加 prototype 原型,然后再在 prototype上添加一个 constructor 属性,并让其指向 f 的引用。

当执行 var f = new f() 时,f 被当成了构造函数,f 是f的实例对象,此时 f 原型上的 constructor 传递到了 f 上,因此 f.constructor == f

细节问题:

(1). null 和 undefined 是无效的对象,因此是不会有 constructor 存在的,这两种类型的数据需要通过其他方式来判断。

(2). 函数的 constructor 是不稳定的,这个主要体现在自定义对象上,当开发者重写 prototype 后,原有的 constructor 引用会丢失,constructor 会默认为 object

4、tostring

tostring() 是 object 的原型方法,调用该方法,默认返回当前对象的 [[class]] 。这是一个内部属性,其格式为 [object xxx] ,其中 xxx 就是对象的类型。

对于 object 对象,直接调用 tostring()  就能返回 [object object] 。而对于其他对象,则需要通过 call / apply 来调用才能返回正确的类型信息。

\

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网