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 相关文章推荐
JS判断元素为数字的奇异写法分享
Aug 01 Javascript
JavaScript中this的使用详解
Nov 08 Javascript
解析jQuery的三种bind/One/Live事件绑定使用方法
Dec 30 Javascript
Javascript 5种方法实现过滤删除前后所有空格
Jun 22 Javascript
AngularJS ng-mousedown 指令
Aug 02 Javascript
Servlet实现文件上传,可多文件上传示例
Dec 05 Javascript
jQuery弹出层插件popShow用法示例
Jan 23 Javascript
js实现带三角符的手风琴效果
Mar 01 Javascript
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
Jul 30 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
Oct 17 Javascript
使用axios请求时,发送formData请求的示例
Oct 29 Javascript
Vue.Draggable实现交换位置
Apr 07 Vue.js
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
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
PHP数据流应用的一个简单实例
2012/09/14 PHP
PHP设置图片文件上传大小的具体实现方法
2013/10/11 PHP
php保存任意网络图片到服务器的方法
2015/04/14 PHP
PHP实现阿里大鱼短信验证的实例代码
2017/07/10 PHP
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
Extjs Ext.MessageBox.confirm 确认对话框详解
2010/04/02 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
javascript中的this详解
2014/12/08 Javascript
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
鼠标悬停小图标显示大图标
2016/01/22 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
2019/10/10 jQuery
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
JavaScript 判断数据类型的4种方法
2020/09/11 Javascript
使用python解析xml成对应的html示例分享
2014/04/02 Python
python黑魔法之参数传递
2016/02/12 Python
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
Python3爬虫之urllib携带cookie爬取网页的方法
2018/12/28 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
2019/01/15 Python
自定义Django_rest_framework_jwt登陆错误返回的解决
2020/10/18 Python
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
C++的几个面试题附答案
2016/08/03 面试题
2014年迎新年联欢会活动策划方案
2014/02/26 职场文书
教代会闭幕词
2015/01/28 职场文书
因个人工作失误检讨书
2019/06/21 职场文书
QT与javascript交互数据的实现
2021/05/26 Javascript
Python中的程序流程控制语句
2022/02/24 Python