JS中的instanceof和typeof
原文链接: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
JS中的instanceof和typeof的更多相关文章
- JS中的instanceof和typeof,以及特殊引用类型
		
1.instanceof是用于测试对象类型,通常格式为:a instanceof b,返回true或falise,表示为对象a是否是类型b的实例. typeof则是用于测试基本类型,包括undefin ...
 - 推断js中的类型:typeof / instanceof / constructor / prototype
		
怎样推断js中的类型呢,先举几个样例: var a = "jason"; var b = 123; var c = true; var d = [1,2,3]; var e = n ...
 - Js中常用知识点(typeof、instanceof、动态属性、变量作用域)
		
1.Js中各类型的常量表示形式:Number:number String:string Object:objec 2.typeof运算符在Js中的使用:用于判断某一对象是何种类型,返回值 ...
 - JavaScript高级程序设计(五): js的关键字instanceof和typeof使用
		
JavaScript中instanceof和typeof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的: 一.typeof 1.含义:typeof返回一个表达式的数据类型的字符 ...
 - 浅谈js中的数据类型,使用typeof获取js数据类型
		
JS中的数据类型 1):Undefined——值未定义 注:Undefined类型只有一个值,即特色的undefined.在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined ...
 - js中的instanceof运算符
		
概述 instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上 语法 obj instanceof Object;//true 实例obj ...
 - js中null, undefined 和 typeof
		
参考自:http://www.cnblogs.com/wicub/p/3442891.html typeof 是运算符,注意不是函数,是运算符,其作用,是考察变量究竟是什么类型.或曰,是变量是否定义或 ...
 - JavaScript中instanceof与typeof运算符的用法及区别详细解析
		
JavaScript中的instanceof和typeof常被用来判断一个变量是什么类型的(实例),但它们的使用还是有区别的: typeof 运算符 返回一个用来表示表达式的数据类型的字符串. typ ...
 - js中的typeof name
		
js中的name 使用typeof name得到 string.. 因为name是全局变量,可以在任意浏览器中使用 . cosole.dir(window)查看.. console.log(type ...
 
随机推荐
- java 调用javascript
			
首先我们在D盘的根目录下有一个js文件 名叫 common.js 假设里面有一个这样的方法 /** * @param int * _number 你想要的最大值 * @param ...
 - python-自定义异步非阻塞爬虫框架
			
api import socket import select class MySock: def __init__(self, sock, data): self.sock = sock self. ...
 - JAVA程序对MYSQL数据库加锁实验
			
什么是脏读,不可重复读,幻读 1. 脏读 :脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据. 2. 不可重 ...
 - [USACO09FEB] 改造路Revamping Trails | [JLOI2011] 飞行路线
			
题目链接: 改造路 飞行路线 其实这两道题基本上是一样的,就是分层图的套路题. 为什么是分层图呢?首先,我们的选择次数比较少,可以把这几层的图建出来而不会爆空间.然后因为选择一个边权为0的路线之后我们 ...
 - ERWin7.2在Windows 8.1中生成数据库遇到的问题!
			
我在Windows 8.1中使用ERWin7.2,想象以前在windows 7 或者XP里那样先预览一下要生成的SQL语句,结果我发现居然没有“preview”按钮了,自然也就无法看到要生成的SQL语 ...
 - 逃生(反向topo)
			
逃生 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status De ...
 - Python一篇学会多进程
			
阅读目录 1. Process 2. Lock 3. Semaphore 4. Event 5. Queue 6. Pipe 7. Pool 序. multiprocessing python 中的多 ...
 - CVE-2012-2122-Mysql身份认证漏洞及利用
			
一.漏洞简介 当连接MariaDB/MySQL时,输入的密码会与期望的正确密码比较,由于不正确的处理,会导致即便是memcmp()返回一个非零值,也会使MySQL认为两个密码是相同的.按照公告说法大约 ...
 - [ActionSprit 3.0] FMS客户端调用服务器端命令或方法
			
有时候客户端需要和服务器端进行通信,服务器端会有个main.asc文件(当然,文件名可以自己定义),这个就是服务器端程序,是在服务器上执行的,你可以用trace调试,trace的内容会在管理服务器的页 ...
 - [ActionScript 3.0] SharedObject的用法简介
			
package com.models { import flash.net.SharedObject; /** * @author * @E-mail * @create 2015-6-12 下午2: ...