当前位置:首页 > 开发 > Web前端 > 前端 > 正文

typeof与instanceof

发表于: 2011-10-11   作者:cxy020   来源:转载   浏览次数:
摘要: typeof 返回对象数据类型,总共有6种返回结果 "number","string","boolean","object","function","undefined" 语法: typeof "a" == "string" &nbs
typeof 返回对象数据类型,总共有6种返回结果
"number","string","boolean","object","function","undefined"
语法: typeof "a" == "string"
      typeof  [] == "object"


instanceof 判断对象是否是特定类的一个实例,返回一个 Boolean 值。

语法: var a = new String("ss");
      a instanceof String == true
      [] instanceof Array == true
但是 "sss" instanceof String == false, 为什么呢,个人认为有两个原因
1.通过typeof 知道  typeof new String("ss") == "object",
而typeof "ss" == "string"
2.instanceof 是判断对象

在实际开发中,我们通常使用typeof来判断一个变量是否存在。
如if(typeof a!="undefined"){},而不要去使用if(a),因为如果a不存在(未声明)则会出错。
但是对于Array,Null等特殊对象使用typeof一律返回object,这正是typeof的局限性。

我们通常使用instanceof来判断对象是否是数据,或者是否是某一个对象的实例。
如var a=new Array();a instanceof Array == true,
var a = new Object(); a instanceof Array == false。
再如:function test(){};var a=new test();a instanceof test == true。


但是js也有特列,看起来像数组或对象却实际上又不是。
如:function的arguments,arguments看起来是一个Array,但如果使用instaceof去测试会发现arguments不是一个Array对象。
如:window instanceof Object, 这个在IE7里面会返回false,但是在ff里面返回的却是true。

typeof与instanceof

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
javascript中的instanceof http://stackoverflow.com/questions/2449254/what-is-the-instanceof-op
typeof是一个一元运算符,它返回的结果 始终是一个字符串,对不同的操作数,它返回不同的结果。 具
typeof是一个一元运算符,它返回的结果 始终是一个字符串,对不同的操作数,它返回不同的结果。 具
可以使用instanceof关键字判断一个对象到底是那个类的实例。 class A{ // 定义类A public void fun1
对于稍微有点经验的.NET开发人员来说,倘若被问及如何保持线程同步,我想很多人都能说好好几种。在
为什么? 测试环境: chrome 30 IE 6/9 Firefox 24 Opera 12/16 Safari 5 Nodejs 0.8 解惑(Ecma-26
对于稍微有点经验的.NET开发人员来说,倘若被问及如何保持线程同步,我想很多人都能说好好几种。在
JavaScript instanceof 运算符深入剖析 随着 web 的发展,越来越多的产品功能都放在前端进行实现,
对于稍微有点经验的.NET开发人员来说,倘若被问及如何保持线程同步,我想很多人都能说好好几种。在
  时间回到两个月前,简单地理了理原型链、prototype以及__proto__之间的乱七八糟的关系,同时也
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号