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 相关文章推荐
JQuery为textarea添加maxlength属性的代码
Apr 07 Javascript
js静态方法与实例方法分析
Jul 04 Javascript
JS中引用百度地图并将百度地图的logo和信息去掉
Sep 29 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
Mar 10 Javascript
使用jquery 简单实现下拉菜单
Jan 14 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
Apr 16 Javascript
jQuery实现强制cookie过期方法汇总
May 22 Javascript
jquery实现简单的自动播放幻灯片效果
Jun 13 Javascript
JS如何判断json是否为空
Jul 06 Javascript
微信小程序App生命周期详解
Jan 31 Javascript
vue 自定义指令自动获取文本框焦点的方法
Aug 25 Javascript
JS实现简单贪吃蛇小游戏
Oct 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
php 无极分类(递归)实现代码
2010/01/05 PHP
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
2011/04/23 PHP
PHP命名空间(Namespace)的使用详解
2013/05/04 PHP
PHP中创建图像并绘制文字的例子
2014/11/19 PHP
php在线解压ZIP文件的方法
2014/12/30 PHP
非常经典的PHP文件上传类分享
2016/05/15 PHP
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
jquery如何判断表格同一列不同行input数据是否重复
2014/05/14 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
2015/09/25 Javascript
Javascript removeChild()删除节点及删除子节点的方法
2015/12/27 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
jquery实现轮播图效果
2017/02/13 Javascript
jQuery树控件zTree使用方法详解(一)
2017/02/28 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
2019/01/23 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
React优化子组件render的使用
2019/05/12 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
pyside写ui界面入门示例
2014/01/22 Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
python使用socket进行简单网络连接的方法
2015/04/29 Python
Python中基本的日期时间处理的学习教程
2015/10/16 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
python创造虚拟环境方法总结
2019/03/04 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
pandas按条件筛选数据的实现
2021/02/20 Python
美国婴儿用品店:Babies”R”Us
2017/10/12 全球购物
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
The Beach People美国:澳洲海滨奢华品牌
2018/07/05 全球购物
Monica Vinader官网:英国轻奢珠宝品牌
2020/02/05 全球购物
推荐信格式要求
2014/05/09 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
国博复兴之路观后感
2015/06/02 职场文书
Linux中一对多配置日志服务器的详细步骤
2022/07/23 Servers