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 相关文章推荐
javascript文件中引用依赖的js文件的方法
Mar 17 Javascript
js实现带按钮的上下滚动效果
May 12 Javascript
jQuery插件dataTables添加序号列的方法
Jul 06 Javascript
jQuery 跨域访问解决原理案例详解
Jul 09 Javascript
轻松实现jquery选项卡切换效果
Oct 10 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
Dec 13 Javascript
angularjs实现下拉列表的选中事件示例
Mar 03 Javascript
BootStrap的双日历时间控件使用
Jul 25 Javascript
使用Dropzone.js上传的示例代码
Oct 10 Javascript
微信小程序仿RadioGroup改变样式的处理方案
Jul 13 Javascript
layui下拉框获取下拉值(select)的例子
Sep 10 Javascript
JavaScript实现省份城市的三级联动
Feb 11 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
php5数字型字符串加解密代码
2008/04/24 PHP
php通用防注入程序 推荐
2011/02/26 PHP
PHP中英混合字符串截取函数代码
2011/07/17 PHP
php实现Mongodb自定义方式生成自增ID的方法
2015/03/23 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
学习YUI.Ext 第二天
2007/03/10 Javascript
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
JQuery的ajax基础上的超强GridView展示
2009/09/18 Javascript
发布一个基于javascript的动画类 Fx.js
2010/11/05 Javascript
javascript类型转换使用方法
2014/02/08 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
22点关于jquery性能优化的建议
2014/05/28 Javascript
angularjs中的单元测试实例
2014/12/06 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
2016/03/22 Javascript
AngularJS入门教程之数据绑定用法示例
2016/11/01 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
vue 自定义右键样式的实例代码
2019/11/06 Javascript
React中获取数据的3种方法及优缺点
2020/02/18 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
Python探索之SocketServer详解
2017/10/28 Python
python字典快速保存于读取的方法
2018/03/23 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
不到20行实现Python代码即可制作精美证件照
2020/04/24 Python
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
Stefania Mode美国:奢华设计师和时尚服装
2018/01/07 全球购物
科颜氏法国官网:Kiehl’s法国
2019/08/20 全球购物
深圳茁壮笔试题
2015/05/28 面试题
学院书画协会部门职责
2013/11/28 职场文书
服务之星事迹材料
2014/05/03 职场文书
大学生英文求职信范文
2015/03/19 职场文书
公司借条范本
2015/05/25 职场文书