博客
关于我
js的各种数据类型判断(in、hasOwnProperty)
阅读量:355 次
发布时间:2019-03-04

本文共 2793 字,大约阅读时间需要 9 分钟。

JavaScript 数据类型判断方法

在 JavaScript 开发过程中,确定数据类型对于调试、优化和代码管理具有重要意义。本文将介绍几种常用的数据类型判断方法,以及它们在实际开发中的应用。

1. typeof

typeof 是 JavaScript 用来判断数据类型的内置操作符。它的写法有两种形式:typeof xxxtypeof(xxx)。以下是 typeof 的一些示例:

  • typeof 2 输出 number
  • typeof NaN 输出 number
  • typeof null 输出 object
  • typeof {} 输出 object
  • typeof [] 输出 object
  • typeof (function(){}) 输出 function
  • typeof undefined 输出 undefined
  • typeof '222' 输出 string
  • typeof true 输出 boolean

需要注意的是,typeof null 的特殊性,因为它会返回 object。此外,typeof 也可以用于判断自定义对象构造函数返回的对象类型。

2. instanceof

instanceof 用于判断对象的类型。它的使用要求是后面跟一个对象类型,并且大小写必须正确。instanceof 适用于需要在代码中做条件判断或分支的情况。以下是 instanceof 的示例:

  • var c = [1, 2, 3]; console.log(c instanceof Array); // true
  • var d = new Date(); console.log(d instanceof Date); // true
  • var e = function(){alert(111);}; console.log(e instanceof Function); // true
  • var f = function(){this.name="22";}; console.log(f instanceof function); // false

需要注意的是,instanceof 不能用于判断函数类型,除非明确使用 Function 或自定义函数构造函数。

3. constructor

constructor 用于根据对象的构造函数来判断对象的类型。它返回创建该对象的数组函数的引用。以下是 constructor 的示例:

  • var c = [1, 2, 3]; console.log(c.constructor === Array); // true
  • var d = new Date(); console.log(d.constructor === Date); // true
  • var e = function(){alert(111);}; console.log(e.constructor === Function); // true

需要注意的是,constructor 在类继承时可能会引发一些问题,因此在具体应用中需要谨慎处理。

4. prototype

prototype 是 JavaScript 中用于判断数据类型的另一种方法。它通过 Object.prototype.toString.call 来更精确地判断数据类型。这种方法适用于所有数据类型,包括自定义对象和 DOM 节点。以下是 prototype 的示例:

  • var gettype = Object.prototype.toString;
  • gettype.call('aaaa') 输出 [object String]
  • gettype.call(2222) 输出 [object Number]
  • gettype.call(true) 输出 [object Boolean]
  • gettype.call(undefined) 输出 [object Undefined]
  • gettype.call(null) 输出 [object Null]
  • gettype.call({}) 输出 [object Object]
  • gettype.call([]) 输出 [object Array]
  • gettype.call(function(){}) 输出 [object Function]

此外,prototype 还可以用于判断 DOM 节点类型,如 [object HTMLDivElement] 用于 div 对象,[object HTMLBodyElement] 用于 body 对象等。这些方法在开发插件时非常有用。

5. ES6 的 in 运算符

in 运算符用于判断对象或数组中是否包含某个值。它主要用于检查属性的存在性。以下是 in 的示例:

  • let obj = { a: 'muzidigbig', b: '木子大大' }; console.log('a' in obj); // true
  • let arr = [,,,,,]; console.log(0 in arr); // false
  • let arr1 = ['muzidigbig', '木子大大', ,]; console.log(2 in arr1); // false
  • console.log(1 in arr1); // true

需要注意的是,in 运算符会检查对象的原型链,因此在判断数组中的空位时,可能会返回不准确的结果。

6. hasOwnProperty

hasOwnProperty 用于检查对象自身是否包含某个属性。它不会检查原型链上的属性。以下是 hasOwnProperty 的示例:

  • function Monster(name, age, car) { this.name = name; this.age = age; this.car = car; }
  • var niu = new Monster('niu', 29, 'biShui');
  • Monster.prototype.hobby = '吃肉';
  • console.log('hobby' in niu); // true
  • console.log(niu.hasOwnProperty('hobby')); // false

hasOwnProperty 在检查对象自身属性时非常有用,尤其是在处理继承属性时。

总结

在 JavaScript 中,数据类型判断方法有多种选择,包括 typeofinstanceofconstructorprototypeinhasOwnProperty。每种方法都有其适用的场景,选择合适的方法可以提高代码的可读性和维护性。在实际开发中,根据具体需求选择合适的判断方法,能够更高效地解决问题。

转载地址:http://fetr.baihongyu.com/

你可能感兴趣的文章
PGSQL安装PostGIS扩展模块
查看>>
pg数据库中两个字段相除
查看>>
PhalApi:[1.23] 请求和响应:GET和POST两者皆可得及超越JSON格式返回
查看>>
Phalcon环境搭建与项目开发
查看>>
Phantom.js维护者退出,项目的未来成疑
查看>>
Pharmaceutical的同学们都看过来,关于补码运算的复习相关内容
查看>>
Phoenix 查看表信息及修改元数据
查看>>
Phoenix基础命令_视图映射和表映射_数字存储问题---大数据之Hbase工作笔记0036
查看>>
phoenix无法连接hbase shell创建表失败_报错_PleaseHoldException: Master is initializing---记录020_大数据工作笔记0180
查看>>
Phoenix简介_安装部署_以及连接使用---大数据之Hbase工作笔记0035
查看>>
phoenix连接hbase报错Can not resolve hadoop120, please check your network_记录026---大数据工作笔记0187
查看>>
Photoshop工作笔记001---Photoshop常用快捷键总结
查看>>
Reids配置文件redis.conf中文详解
查看>>
Photoshop脚本入门
查看>>
PHP
查看>>
Regular Expression Notes
查看>>
PHP $FILES error码对应错误信息
查看>>
PHP $_FILES函数详解
查看>>
PHP $_SERVER['HTTP_REFERER'] 获取前一页面的 URL 地址
查看>>
php & 和 & (主要是url 问题)
查看>>