js intanceof 或 typeof
typeof和instanceof的区别
typeof和instanceof都可以用来判断变量,它们的用法有很大区别:
typeof会返回一个变量的基本类型,只有以下几种:number,boolean,string,object,undefined,function;例:
alert(typeof(1));//number
alert(typeof("abc"));//string
alert(typeof(true));//boolean
alert(typeof(m));//undefined
如果我们想要判断一个变量是否存在,可以使用typeof:(不能使用if(a) 若a未声明,则报错)
if(typeof a != 'undefined'){
//变量存在
}
instanceof返回的是一个布尔值,如:
var a = {};
alert(a instanceof Object); //true
var b = [];
alert(b instanceof Array); //true
需要注意的是,instanceof只能用来判断对象和函数,不能用来判断字符串和数字等,如:
var b = '123';
alert(b instanceof String); //false
alert(typeof b); //string
var c = new String("123");
alert(c instanceof String); //true
alert(typeof c); //object
另外,用instanceof可以判断变量是否为数组
大家都知道js中可以使用typeof来判断变量的基本类型,如:
alert(typeof '111'); // "string"
alert(typeof 22); // "number"
alert(typeof a); // "undefined"
alert(typeof undefined); // "undefined"
alert(typeof []); // "object"
但是这个方法不适用于来判断数组,因为不管是数组还是对象,都会返回object,这就需要我们需求其他的方法。
有几种方法可以拿来判断:
1、constructor属性
这个属性在我们使用js系统或者自己创建的对象的时候,会默认的加上,例如:
var arr = [1,2,3]; //创建一个数组对象
arr.prototype.constructor = Array; //这一句是系统默认加上的
所以我们就可以这样来判断:
var arr = [1,2,3,1];
alert(arr.constructor === Array); // true
2、instanceof
instanceof是检测对象的原型链是否指向构造函数的prototype对象的,所以我们也可以用它来判断:
var arr = [1,2,3];
alert(arr instanceof Array); // true
最后,为了给大家一个结果,现写出一个终极解决方案:
判断数组终极解决方案
var arr = [1,2,3];
function isArrayFn(obj){ //封装一个函数
if (typeof Array.isArray === "function") {
return Array.isArray(obj); //浏览器支持则使用isArray()方法
}else{ //否则使用toString方法
return Object.prototype.toString.call(obj) === "[object Array]";
}
}
alert(isArrayFn(arr));// true
js intanceof 或 typeof的更多相关文章
- 聊聊js中的typeof
内容: 1.typeof 2.值类型和引用类型 3.强制类型转换 typeof 官方文档:typeof 1.作用: 操作符返回一个字符串,指示未经计算的操作数的类型. 2.语法: typeof ope ...
- Ext JS中的typeOf
Ext JS中的typeOf:以字符串格式,返回给定变量的类型 其中对字符串对象.元素节点.文本节点.空白文本节点判断并不准确 测试代码如下: <!DOCTYPE HTML PUBLIC &qu ...
- 浅谈JS中的typeof和instanceof的区别
JS中的typeof和instanceof常用来判断一个变量是否为空,或者是什么类型. typeof typeof运算符返回一个用来表示表达式的数据类型的字符串. typeof一般返回以下几个字符串: ...
- JS类型判断typeof PK {}.toString.call(obj)
参考链接:https://www.talkingcoder.com/article/6333557442705696719 先看typeof <!doctype html> <htm ...
- js中的typeof name
js中的name 使用typeof name得到 string.. 因为name是全局变量,可以在任意浏览器中使用 . cosole.dir(window)查看.. console.log(type ...
- JS isArray、typeof、instanceof
Array.isArray() 用来检验是不是数组 var a = [1,2,3] console.log(typeof a); // object console.log(Array.isArray ...
- js instanceof和typeof的区别及简单用法
js中判断一个变量的类型,通常的做法是用typeof方法,看它返回的是 什么,但是对于数组和对象它返回的都是object,ECMAScript引入了java中的instanceof 方法来弥补这一缺陷 ...
- JSON对象和字符串的收发(JS客户端用typeof()进行判断非常重要)
Ajax前台向后台传递对象: 数据准备 将js对象或者json对象转换为json字符串在Ajax传递,在后台中再将json字符串转换为json对象,再转换为java对象或在前端和后端构造一样的数据结构 ...
- 一文搞懂js中的typeof用法
基础 typeof 运算符是 javascript 的基础知识点,尽管它存在一定的局限性(见下文),但在前端js的实际编码过程中,仍然是使用比较多的类型判断方式. 因此,掌握该运算符的特点,对于写出好 ...
随机推荐
- jenkins结合docker
参考:https://m.aliyun.com/yunqi/articles/80459?spm=5176.mtagdetail.0.0.vJJ8Gj 上面这篇文章讲述了一种工作思路:CICD(持续集 ...
- DWZ(一):框架初了解
DWZ富client框架(jQuery RIAframework),是中国人自己开发的基于jQuery实现的Ajax RIA开源框架. DWZ富client框架设计目标是简单有用.扩展方便.高速开发. ...
- php之文件类型解析漏洞防御与攻击
php在处理文件上传时,经常可以用到下面几种方式来判断文件的类型 1.通过文件名后缀,不安全,非常容易欺骗2.通过mime判断,部分类型的文件通过修改文件后缀名,也可以欺骗服务器3.通过头字节判断文件 ...
- D3.js系列——布局:弦图和集群图/树状图
一.弦图 1.弦图是什么 弦图(Chord),主要用于表示两个节点之间的联系的图表.两点之间的连线,表示谁和谁具有联系. 2.数据 初始数据为: var city_name = [ "北京& ...
- solr File Upload "Unsupported ContentType: application/vnd.ms-excel Not in: [application/xml, application/csv, application/json, text/json, text/csv, text/xml, application/javabin]",
今天在用solr管理界面导入文件时报错:"Unsupported ContentType: application/vnd.ms-excel Not in: [application/xm ...
- python 操作solr索引数据
测试代码1: def test(self): data = {", "*字段名*": u"我是一个大好人"}}} params = {"bo ...
- 最短路径——Floyd,Dijkstra(王道)
题目描述: 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线 ...
- Managed Media Aggregation using Rtsp and Rtp
his article was written almost 2 years ago, it's content may not reflect the latest state of the cod ...
- linux上MySQL改动password的各种方法,yc整理
MySQL改动password的各种方法 整理了下面四种在MySQL中改动rootpassword的方法,可能对大家有所帮助! 方法1: 用SET PASSWORD命令 mysql -uroot my ...
- 60分钟搞定JAVA加解密
从摩尔电码到小伙伴之间老师来了的暗号,加密信息无处不在.从军事到生活,加密信息的必要性也不言而喻. 今天,我们就来看看java怎么对数据进行加解密 分类 a.古典密码 -- 受限制算法:算法的保密性给 ...