JS中的instanceof和typeof
2024-08-25 14:24:06
原文链接:http://hi.baidu.com/pryzjvvpkkbhjyq/item/440fb91cda5cb90b8ebde43f
typeof用以获取一个变量的类型
语法:typeof a 或 typeof(a)
一般只能返回如下几个结果:number、boolean、string、function、object、undefined。
我们可以使用typeof来获取一个变量是否存在,如:if(typeof a != "undefined"){}
而不要去使用if(a),因为如果a不存在(未声明)则会出错
对于Array、Null等特殊对象,使用typeof一律返回object,这正是typeof的局限性。
instanceof用于判断一个变量是否某个对象的实例
如果我们希望获取一个对象是否是数组,或判断某个变量是否是某个对象的实例则要选择使用instanceof。
如:
var a=new Array();
alert(a instanceof Array);//输出true
alert(a instanceof Object);//输出true,因为Array是object的子类。
再如:
function test(){};
var a=new test();
alert(a instanceof test);//输出true。
谈到instanceof,这里顺便插入一个问题,就是function的arguments(一个可以访问函数的所有参数的对象,类似数组,实际上不是数组对象)
我们大家也许都认为arguments是一个Array,因为其具有数组一样的访问性质及方式
可以由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性length
但如果使用instanceof去测试会发现arguments不是一个Array对象,尽管看起来很像。
function Person(name, sex){
this.name = name;
this.sex = sex;
alert(typeof(arguments)); //输出Object
alert(arguments instanceof Object); //输出true
alert(arguments instanceof Array); //输出false
}
var person = new Person();
alert(person instanceof Person); //输出true
alert(typeof(person)); //输出Object
最新文章
- 前端学PHP之运算符
- DOM-Document类型
- mysql 定时任务
- struts2.5框架使用通配符指定方法常见错误
- Deep Learning 10_深度学习UFLDL教程:Convolution and Pooling_exercise(斯坦福大学深度学习教程)
- iOS打开百度地图、高德地图导航
- Atitit.dwr3 不能显示错误详细信息的解决方案,控件显示错误详细信息的解决方案 java .net php
- JS_Ajax基础
- Quartz与Spring整合进行热部署的实现(二)
- CSS3新添加的属性
- SpringMVC 服务器端验证
- KinSlideshow参数设置说明
- Delphi中ADO异步执行方式
- python字符串连接方式(转)
- 复习上学期的HTML+CSS(1)
- Lottie 动画里有图片怎么办?设计师小姐姐也能帮你减少开发量!
- AngularJS 1.x系列:AngularJS服务-Service、Factory、Provider、Value及Constant(5)
- 怎么样启用红米手机5的ROOT权限
- monkey测试样例
- SQL,group by分组后分别计算组内不同值的数量
热门文章
- (转)@RequestParam @RequestBody @PathVariable 等参数绑定注解详解
- jquery datepicker 中文
- CentOS 傻瓜式部署uWSGI + nginx + flask
- Sql Server 2012 数据库同步方式 (发布、订阅)
- .net core 2.0 mvc 获取配置信息
- js vs2013中允许js访问json文件的解决方案
- ocp题库变化,052新加的考试题及答案整理-32
- linux安装报错之:ifconfig command not found解决
- <;转>;jmeter JDBC Request之Query Type
- Spark - 经典案例