zoukankan      html  css  js  c++  java
  • 关于 typeof 与 instanceof

    在 JavaScript 中,typeof 和 instanceof 这两个操作符都可以用于区分不同的变量。这里总结一下。

    typeof 用于检测数据类型,它的基本用法如下面的例子:

    var u;
    var b = true;
    var i = 1234;
    var s = "abc";
    var f = function(){};
    var n = null;
    var o = {key: "value"};
    var a = [1, 2, 3];
    
    console.log(typeof u); // undefined
    console.log(typeof b); // boolean
    console.log(typeof i); // number
    console.log(typeof s); // string
    console.log(typeof f); // function
    console.log(typeof n); // object
    console.log(typeof o); // object
    console.log(typeof a); // object
    

    这是最简单的情形,需要注意后面三个的数据类型都是 object。接着看下面的例子

    var b = new Boolean(true); 
    var i = new Number(1234); 
    var s = new String("abc"); 
    var o = new Object();
    var F = function(){}; 
    var f = new F();
    var g = new Function("alert(1);"); 
    
    console.log(typeof b); // object
    console.log(typeof i); // object
    console.log(typeof s); // object
    console.log(typeof o); // object
    console.log(typeof f); // object
    console.log(typeof g); // function
    

    也就是说,用 new 方式得到的都是 object,除了最后一种情形是 function。

    instanceof 操作符用于检测某个对象是否某构造函数的实例。基本的例子如下:

    var b = new Boolean(true); 
    var i = new Number(1234); 
    var s = new String("abc"); 
    var a = [1, 2, 3];
    var r = new Array(3);
    var o = {key: "value"};
    var j = new Object();
    var F = function(){}; 
    var f = new F();
    var g = new Function("alert(1);"); 
    
    console.log(b instanceof Boolean); // true
    console.log(i instanceof Number); // true
    console.log(s instanceof String); // true
    console.log(a instanceof Array); // true
    console.log(r instanceof Array); // true
    console.log(o instanceof Object); // true
    console.log(j instanceof Object); // true
    console.log(f instanceof F); // true
    console.log(g instanceof Function); // true

    但是,对于不由构造函数生成的数据,instanceof 总是返回 false。例如:

    var b = true;
    var i = 1234;
    var s = "abc";
    var u;
    var n = null;
    
    console.log(b instanceof Boolean); // false
    console.log(i instanceof Number); // false
    console.log(s instanceof String); // false
    console.log(u instanceof Object); // false
    console.log(n instanceof Object); // false

    参考资料:
    [1] typeof - JavaScript | MDN
    [2] instanceof - JavaScript | MDN
    [3] JavaScript 秘密花园 #typeof
    [4] JavaScript: Check if object is array? - Stack Overflow
    [5] Nifty Snippets: Say what?
    [6] Remedial JavaScript - Douglas Crockford

  • 相关阅读:
    优雅地从Python入门到入土*序与目录
    【NOI2008】假面舞会
    【HNOI2009】梦幻布丁
    【题解】前k大子段和
    【NOIP2017】宝藏
    【NOIP2014】飞扬的小鸟
    【NOIP2014】解方程
    【NOIP2012】开车旅行
    【模板】线性同余方程组
    java实现省市区三级联动
  • 原文地址:https://www.cnblogs.com/zoho/p/2871726.html
Copyright © 2011-2022 走看看