zoukankan      html  css  js  c++  java
  • JS中的instanceof和typeof

    原文链接:http://hi.baidu.com/pryzjvvpkkbhjyq/item/440fb91cda5cb90b8ebde43f


    typeof用以获取一个变量的类型

    语法:typeof a 或 typeof(a) 

    一般只能返回如下几个结果: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,因为其具有数组一样的访问性质及方式

    可以由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性length

    但如果使用instanceof去测试会发现arguments不是一个Array对象,尽管看起来很像。

    function Person(name, sex){
           this.name = name;
           this.sex = sex;
           alert(typeof(arguments)); //输出Object
           alert(arguments instanceof Object); //输出true
           alert(arguments instanceof Array); //输出false
    }
    var person = new Person(); alert(person instanceof Person); //输出true alert(typeof(person)); //输出Object




  • 相关阅读:
    GoJS实例1
    MAVEN 添加本地jar
    找不到xml、找不到类
    office365激活码序列号密钥:
    【转载】EF Core & Castle DynamicProxy基本用法(AOP)
    【转载】SQL Server
    【转载】对象克隆(C# 快速高效率复制对象另一种方式 表达式树转)
    [转载] Emit动态生成代码
    【转载】Windows 下搭建 wmi_exporter+Prometheus+Grafana 服务器性能监控平台
    Java RMI 使用
  • 原文地址:https://www.cnblogs.com/czf-zone/p/3602432.html
Copyright © 2011-2022 走看看