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判断非数字的简单例子
Jul 18 Javascript
jQuery实现延迟跳转的方法
Jun 05 Javascript
jQuery实现进度条效果代码
Dec 17 Javascript
Bootstrap零基础入门教程(二)
Jul 18 Javascript
浅述节点的创建及常见功能的实现
Dec 15 Javascript
JavaScript验证知识整理
Mar 24 Javascript
jquery获取链接地址和跳转详解(推荐)
Aug 15 jQuery
Vue+jquery实现表格指定列的文字收缩的示例代码
Jan 09 jQuery
AngularJS下$http服务Post方法传递json参数的实例
Mar 29 Javascript
vue 项目中使用Loading组件的示例代码
Aug 31 Javascript
vue过滤器用法实例分析
Mar 15 Javascript
JavaScript Date对象功能与用法学习记录
Apr 28 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
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
非常实用的php验证码类
2016/05/15 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
2017/08/07 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
javascript实现仿银行密码输入框效果的代码
2007/12/13 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
Notify - 基于jquery的消息通知插件
2011/10/18 Javascript
Google Dart编程语法和基本类型学习教程
2013/11/27 Javascript
AngularJS入门教程引导程序
2016/08/18 Javascript
JS Canvas定时器模拟动态加载动画
2016/09/17 Javascript
React props和state属性的具体使用方法
2018/04/12 Javascript
浅析Vue 生命周期
2018/06/21 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
webpack 处理CSS资源的实现
2019/09/27 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
Django Rest framework之权限的实现示例
2018/12/17 Python
Python对接六大主流数据库(只需三步)
2019/07/31 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
Python编程快速上手——选择性拷贝操作案例分析
2020/02/28 Python
PyTorch安装与基本使用详解
2020/08/31 Python
python计算auc的方法
2020/09/09 Python
python 如何停止一个死循环的线程
2020/11/24 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
2015年幼儿园毕业感言
2014/02/12 职场文书
岗位职责说明书模板
2014/07/30 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
放弃继承权公证书
2015/01/23 职场文书
2015年小学中秋节活动总结
2015/03/23 职场文书
2015年乡镇科普工作总结
2015/05/13 职场文书
铁人观后感
2015/06/16 职场文书
让人瞬间清醒的句子,句句经典,字字如金
2019/07/08 职场文书
利用正则表达式匹配浮点型数据
2022/05/30 Java/Android