• 关于 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

  • 相关阅读:
    重拾Ajax
    和transformjs一起摇摆
    CSS/JS图片鼠标悬浮一道光闪过
    深究JS异步编程模型
    Vue.js组件
    并行计算基础&编程模型与工具
    Oracle442个应用场景------------基础应用场景
    消息摘要算法-HMAC算法
    linux上网络配置不生效的怪异现象处理
    Eclipse 将projectBuild Path中引用的jar包自己主动复制到WEB-INF下的lib目录下
  • 原文地址:https://www.cnblogs.com/zoho/p/2871726.html
Copyright © 2020-2023  润新知