关闭

JS中typeof与instanceof的区别

95人阅读 评论(0) 收藏 举报
分类:

JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的。但它们之间还是有区别的:

typeof

typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型。

它返回值是一个字符串,该字符串说明运算数的类型。typeof 一般只能返回如下几个结果:

number,boolean,string,function,object,undefined。我们可以使用 typeof 来获取一个变量是否存在,如 if(typeof a!="undefined"){alert("ok")},而不要去使用 if(a) 因为如果 a 不存在(未声明)则会出错,对于 Array,Null 等特殊对象使用 typeof 一律返回 object,这正是 typeof 的局限性。

网上的一个小例子:

instanceof

instance:实例,例子

a instanceof b?alert("true"):alert("false"); //a是b的实例?真:假

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) 会返回

谈到 instanceof 我们要多插入一个问题,就是 function 的 arguments,我们大家也许都认为 arguments 是一个 Array,但如果使用 instaceof 去测试会发现 arguments 不是一个 Array 对象,尽管看起来很像。

另外:

测试 var a=new Array();if (a instanceof Object) alert('Y');else alert('N');

得'Y’

但 if (window instanceof Object) alert('Y');else alert('N');

得'N'

所以,这里的 instanceof 测试的 object 是指 js 语法中的 object,不是指 dom 模型对象。

使用 typeof 会有些区别

alert(typeof(window)) 会得 object

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

js中typeof和instanceof用法区别

js中typeof和instanceof用法区别 转自:http://blog.csdn.net/u014421556/article/details/52083215 typeof和in...
  • suyu_yuan
  • suyu_yuan
  • 2017-06-16 11:31
  • 172

js中typeof和instanceof用法区别

typeof和instanceof判断变量,typeof会返回一个变量的基本类型,只有以下几种:number,boolean,string,function(函数),object(NULL,数组,对象...
  • qq_27626333
  • qq_27626333
  • 2017-07-26 14:28
  • 247

typeof和instanceof的作用和区别

typeof的作用 typeof是一元运算符,返回值为字符串,该字符串用来说明运算数的数据类型 用来获取运算数的数据类型。返回的值有number、boolean、undefined、function...
  • larennani
  • larennani
  • 2017-11-09 17:00
  • 32

JS如何判断空对象,及typeof和instanceof的区别

ECMAScript中有5种基本数据类型,分别为Undefined,Null,Boolean,Number,String。另外还有一种复杂数据类型Object,Object本质上是由一组无序的名值对组...
  • qq_21794603
  • qq_21794603
  • 2017-02-28 21:48
  • 595

JS中typeof和instanceof的用法小解

javascript中,测试数据类型用到typeof 和 instanceof. 1. typeof一般测试基本类型(Undefined、Null、Boolean、Number、String),对...
  • toyourwindy
  • toyourwindy
  • 2016-11-30 16:22
  • 1894

js中的instanceof运算符

概述 instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上 语法 obj instanceof Object;//tru...
  • zgrkaka
  • zgrkaka
  • 2017-01-16 09:52
  • 559

Javascript中判断变量是 array还是object(是数组还是对象)

此段文字是从github上截取由本人翻译过来的。 原文地址:https://github.com/nathansmith/javascript-quiz/blob/master/ANSWERS.md ...
  • vvhesj
  • vvhesj
  • 2013-01-21 17:24
  • 7779

js中typeof用法详细介绍

本文章来介绍在js使用中的一个函数typeof用法, typeof 运算符把类型信息当作字符串返回,包括有大家常有变量类型。 typeof 运算符把类型信息当作字符串返回。typeof ...
  • z18842589113
  • z18842589113
  • 2016-11-24 08:39
  • 10964

JS instanceof 判断类型 问题

判断变量类型:一般情况下,可以先用typeof 运算符,如果结果是"object",再用instanceof来判断;  特别的地方是:     instanceof不认为原始类型值的变量是对象, ...
  • sweet0112
  • sweet0112
  • 2015-04-29 14:45
  • 930

java中 “==”和“equals”以及instanceof的区别

java基础之 “==”和“ equals”以及instanceof的区别 (1)对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。 “==”比较两个...
  • shenxiuwen1989
  • shenxiuwen1989
  • 2014-05-25 09:23
  • 695
    个人资料
    • 访问:14196次
    • 积分:519
    • 等级:
    • 排名:千里之外
    • 原创:23篇
    • 转载:56篇
    • 译文:7篇
    • 评论:1条
    文章分类
    最新评论