javascript instanceof,typeof的区别


Posted in Javascript onMarch 24, 2010

为什么结果会是false呢?

<script type="text/javascript"> 
var aColors = ["red", "green", "blue"]; 
alert(typeof aColors[0]); //output "string" 
alert(aColors[0] instanceof String); //output "false"; 
</script>

你要区分string 与 String的区别
aColors[0] 是 string值类型, 当然不是String的实例啦。参考下面代码
var aColors = ["red", "green", "blue"];
aColors[0]= new String("1")
alert(typeof aColors[0]); //output "Object"
alert(aColors[0] instanceof String); //output "true";

更多可以参考下面的文章:

instanceof 运算符
返回一个 Boolean 值,指出对象是否是特定类的一个实例。
result = object instanceof class
参数
result
必选项。任意变量。
object
必选项。任意对象表达式。
class
必选项。任意已定义的对象类。
说明
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。
示例
下面的例子举例说明了 instanceof 运算符的用法。

function objTest(obj){ 
var i, t, s = ""; // 创建变量。 
t = new Array(); // 创建一个数组。 
t["Date"] = Date; // 填充数组。 
t["Object"] = Object; 
t["Array"] = Array; 
for (i in t) 
{ 
if (obj instanceof t[i]) // 检查 obj 的类。 
{ 
s += "obj is an instance of " + i + "\n"; 
} 
else 
{ 
s += "obj is not an instance of " + i + "\n"; 
} 
} 
return(s); // 返回字符串。 
} 
var obj = new Date(); 
document.write(objTest(obj));

instanceof和typeof都能用来判断一个变量是否为空或是什么类型的变量。
typeof用以获取一个变量的类型,typeof一般只能返回如下几个结果: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,但如果使用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
年轻的时候,先少废话,多做事。
Javascript 相关文章推荐
在网页中使用document.write时遭遇的奇怪问题
Aug 24 Javascript
悄悄用脚本检查你访问过哪些网站的代码
Dec 04 Javascript
JSON 数字排序多字段排序介绍
Sep 18 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
Aug 27 Javascript
基于jquery实现左右按钮点击的图片切换效果
Jan 27 Javascript
AngularJS入门示例之Hello World详解
Jan 04 Javascript
js实现textarea限制输入字数
Feb 13 Javascript
详解vue中引入stylus及报错解决方法
Sep 22 Javascript
微信小程序实现美团菜单
Jun 06 Javascript
Vue分页插件的前后端配置与使用
Oct 09 Javascript
解决ant-design-vue中menu菜单无法默认展开的问题
Oct 31 Javascript
JavaScript实现点击出现子菜单效果
Feb 08 Javascript
ExtJs使用IFrame的实现代码
Mar 24 #Javascript
JS 显示当前日期与时间的代码
Mar 24 #Javascript
jQuery EasyUI 开源插件套装 完全替代ExtJS
Mar 24 #Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
Mar 24 #Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
Mar 24 #Javascript
jQuery AJAX 调用WebService实现代码
Mar 24 #Javascript
jquery 仿QQ校友的DIV模拟窗口效果源码
Mar 24 #Javascript
You might like
windows平台中配置nginx+php环境
2015/12/06 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
2017/05/05 PHP
PHP实现的堆排序算法详解
2017/08/17 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
2013/04/15 Javascript
用JavaScript修改CSS属性的代码
2013/05/06 Javascript
Javascript获取当前日期的农历日期代码
2014/10/08 Javascript
js实现获取当前时间是本月第几周的方法
2015/08/11 Javascript
JavaScript提高网站性能优化的建议(二)
2016/07/24 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
vue2.0获取自定义属性的值
2017/03/28 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
vue element 生成无线级左侧菜单的实现代码
2019/08/21 Javascript
浅析TypeScript 命名空间
2020/03/19 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
零基础学Python(一)Python环境安装
2014/08/20 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
python在回调函数中获取返回值的方法
2019/02/22 Python
numpy.transpose()实现数组的转置例子
2019/12/02 Python
Python list运算操作代码实例解析
2020/01/20 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
HTML5 CSS3打造相册效果附源码下载
2014/06/16 HTML / CSS
夏威夷咖啡公司:Hawaii Coffee Company
2019/09/19 全球购物
C#实现对任一张表的数据进行增,删,改,查要求,运用Webservice,体现出三层架构
2014/07/11 面试题
书香校园建设方案
2014/05/02 职场文书
学校工作推荐信范文
2014/07/11 职场文书
离婚协议书的范本
2015/01/27 职场文书
2015年办公室文员工作总结
2015/04/24 职场文书
成事在人观后感
2015/06/16 职场文书
Requests什么的通通爬不了的Python超强反爬虫方案!
2021/05/20 Python
「魔导具师妲莉亚永不妥协~从今天开始的自由职人生活~」1、2卷发售宣传CM公开
2022/03/21 日漫
vue elementUI批量上传文件
2022/04/26 Vue.js