js数据类型检测
目录
1. typeof {}
2. {} instanceof Object
3. {}.constructor === Object
4. Object.property.toString.call({})
内容:
1. typeof {}
注意:能够区分string、number、boolean、undefined、function,无法区分array、null、object
//typeof
console.log(typeof ""); //string
console.log(typeof 1); //number
console.log(typeof true); //boolean
console.log(typeof null); //object
console.log(typeof undefined); //undefined
console.log(typeof []); //object
console.log(typeof function(){}); //function
console.log(typeof {}); //object
2. {} instanceof Object
注意:能法区分array、function、object,无法区分字面量string、number、boolean,报错null、undefined
//instanceof
console.log("1" instanceof String); //false
console.log(1 instanceof Number); //false
console.log(true instanceof Boolean); //false
// console.log(null instanceof Null); //报错 Null is not defined
// console.log(undefined instanceof Undefined); // 报错 Undefined is not defined
console.log([] instanceof Array); //true
console.log(function(){} instanceof Function); //true
console.log({} instanceof Object); //true
注意:能够区分new生产的string、number、boolean
console.log(new String('') instanceof String); //true
console.log(new Number(1) instanceof Number); //true
console.log(new Boolean(true) instanceof Boolean); //true
3 {}.constructor === Object
注意:constructor是判断一个元素是否在另一个元素的原型链上面,报错null、undefined
//constructor
console.log(("1").constructor === String); //true
console.log((1).constructor === Number); //true
console.log((true).constructor === Boolean); //true
// console.log((null).constructor === Null); //报错 Cannot read property 'constructor' of null
// console.log((undefined).constructor === Undefined); //报错 Cannot read property 'constructor' of undefined
console.log(([]).constructor === Array); //true
console.log((function() {}).constructor === Function); //true
console.log(({}).constructor === Object); //true
注意:如果是在原型链上面,会出现问题
function Fn(){}; Fn.prototype=new Array(); var f=new Fn(); console.log(f.constructor===Fn); //false
console.log(f.constructor===Array); //true
4. Object.property.toString.call({})
注意:jquery 也是用这个方法进行数据类型检测的
//Object.prototype.toString
var a = Object.prototype.toString; console.log(a.call("aaa")); //[object String]
console.log(a.call(1)); //[object Number]
console.log(a.call(true)); //[object Boolean]
console.log(a.call(null)); //[object Null]
console.log(a.call(undefined)); //[object Undefined]
console.log(a.call([])); //[object Array]
console.log(a.call(function() {})); //[object Function]
console.log(a.call({})); //[object Object]
4. jQuery方法
以下方法对参数进行判断,返回一个布尔值。
jQuery.isArray():是否为数组。 jQuery.isEmptyObject():是否为空对象(不含可枚举的属性)。 jQuery.isFunction():是否为函数。 jQuery.isNumeric():是否为数字。 jQuery.isPlainObject():是否为使用“{}”或“new Object”生成的对象,而不是浏览器原生提供的对象。 jQuery.isWindow():是否为window对象。 jQuery.isXMLDoc():判断一个DOM节点是否处于XML文档之中。
js数据类型检测的更多相关文章
- js 数据类型检测
提起数据类型检测 大多数人首先想起的应该是 typeof 'xxx' == '数据类型' 坦然这种方法对于基本数据类型的检测还是非常方便的,但是当遇到引用数据类型 Object时却爱莫能助,下面就 ...
- js数据类型检测小结
在js中,有四种用于检测数据类型的方式,分别是: typeof 用来检测数据类型的运算符 instanceof 检测一个实例是否属于某个类 constructor 构造函数 Object.protot ...
- js数据类型的检测总结,附面试题--封装一个函数,输入任意,输出他的类型
一.javascript 中有几种类型的值 1.基本数据类型 : 包括 Undefined.Null.Boolean.Number.String.Symbol (ES6 新增,表示独一无二的值) 特点 ...
- 总结的JS数据类型判定(非常全面)
用typeof 来检测数据类型 Javascript自带两套类型:基本数据类型(undefined,string,null,boolean,function,object)和对象类型. 但是如果尝试用 ...
- JS数据类型的理解(猜测)
Js 数据类型 对于这个主题,首先来看几个问题,如果你对这几个问题很清楚的话,那就请直接跳过吧,不用接着往下看了,如果不清楚,建议你还是看看. 1)如果判断函数?function 和object的联系 ...
- javascript 数据类型 -- 检测
一.前言 在上一篇博文中 Javascript 数据类型 -- 分类 中,我们梳理了 javascript 的基本类型和引用类型,并提到了一些冷知识.大概的知识框架如下: 这篇博文就讲一下在写代码的过 ...
- 1. js数据类型_对象_函数_内存
1. js数据类型有哪些? 基本(值)类型 Number ---- 任意数值 String ---- 任意字符串 Boolean ---- true/false undefined ---- unde ...
- JavaScript 数据类型检测总结
JavaScript 数据类型检测总结 原文:https://blog.csdn.net/q3254421/article/details/85483462 在js中,有四种用于检测数据类型的方式,分 ...
- js数据类型简单介绍
JS数据类型 ECMAScript中有5种简单的数据类型:Undefined,Null,Boolean,Number,String.还有一种复杂的数据类型--Object(本质上是由一组无序的名值对组 ...
随机推荐
- day33-python阶段性复习七
rc脚本练习 #!/usr/bin/env python #coding:utf8 import sys import os from subprocess import Popen, PIPE cl ...
- boot项目swagger接口调试工具默认访问路径
今天第一次接触boot项目,项目里集成了swagger接口调试工具,以前写项目的时候在swagger 文件夹里可以找到访问路径,换成boot项目以后找不到swagger文件夹了,百度了一下,boot项 ...
- python笔记11-元组
lis = ['127.0.0.1','3306']#列表tp = ('127.0.0.1','3306') #定义元组 lis[1]='3307'print(lis)print(tp[0])元祖也有 ...
- timeline server介绍
1. timeline是什么 2. timeline能做什么 3. timeline结构 4. timeline怎么配置 1). timeline是什么? 它能存储和检索应用当前和历史信息在yar ...
- mvn package
mvn -B -DskipTests clean package -Dspecific -P test mvn -B -DskipTests clean package -Dspecific -P p ...
- python面向对象封装案例(附:is和==的区别)
面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对 ...
- 无法对含有多个.java(或.class)文档的程序进行编译(或解释)
通常初学者会出现这样的问题:无法对含有多个.java(或.class)文档的程序进行编译(或解释). root@yogile-VirtualBox:/alive/string# javac work/ ...
- 如何利用 LTE/4G 伪基站+GSM 中间人攻击攻破所有短信验证
这次公开课请来的嘉宾对自己的简介是: 连续创业失败的创业导师:伪天使投资人:某非知名私立大学创办人兼校长:业余时间在本校通信安全实验室打杂. 自从他在黑客大会上演讲<伪基站高级利用技术——彻底攻 ...
- 有关导出Excel特殊字符的问题
在导出Excel的时候,如果在一个单元格的最前面有一个双引号(英文状态下),这个单元格一定要将其关闭这个双引号,否则会自动向下匹配同列单元格的双引号,从而导致串行,出现错误数据
- 前台的url通过 ActionName?var1=xx&var2=yy 的形式传给特定action
本文对自己开发的基于lucene和J2EE技术的搜索引擎开发经验进行简单总结.今后可能会从性能的角度总结lucene开发经验.当数据上TB级别后,分布式lucene以及结合分布式文件系统(如HDFS) ...