• javascript-typeof和instanceof区别


    javascript-typeof和instanceof区别

    typeof

    typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型。
    它返回值是一个字符串,该字符串说明运算数的类型。(typeof 运算符返回一个用来表示表达式的数据类型的字符串)
    typeof其实就是判断参数是什么类型的实例,就一个参数

    typeof 一般只能返回如下几个结果:"number"、"string"、"boolean"、"object"、"function" 和 "undefined"。

    var num = 1;
    console.log(typeof num);//number
    console.log(typeof NaN);//number
    var flag = true;
    console.log(typeof flag);//boolean
    var isNull = null;
    console.log(typeof isNull);//object
    var name = "ChanSamKwan";
    console.log(typeof name);//string
    var variable;
    console.log(typeof variable)//undefined
    var arr = [1,2,3];
    console.log(typeof arr);//object
    var obj = {name:"yoyo"};
    console.log(typeof obj)//object
    function showName(name){
        console.log(name)
    }
    console.log(typeof showName)//function

    可以看到在使用 typeof 运算符时运算引用类型时,无论引用的是什么类型的对象,它都返回 “object”,(注意typeof null也是返回字符串object,函数返回 function字符串)
    这就需要用到instanceof来检测某个对象是不是另一个对象的实例。instanceof运算符测试构造函数的prototype属性是否出现在对象的原型链中的任何位置

     instanceof

    // 定义构造函数
    function C(){} 
    function D(){} 
    var o = new C();
    o instanceof C; // true,因为 Object.getPrototypeOf(o) === C.prototype
    o instanceof D; // false,因为 D.prototype 不在 o 的原型链上
    o instanceof Object; // true,因为 Object.prototype.isPrototypeOf(o)返回true
    C.prototype instanceof Object // true,同上
    C.prototype = {};
    var o2 = new C();
    o2 instanceof C; // true
    o instanceof C; // false,C.prototype指向了一个空对象,这个空对象不在o的原型链上.
    D.prototype = new C(); // 继承
    var o3 = new D();
    o3 instanceof D; // true
    o3 instanceof C; // true 因为 C.prototype现在在o3的原型链上
  • 相关阅读:
    PostgerSQL 回收表空间,查看占用磁盘大小
    为 Docker 添加阿里云的镜像地址
    Docker 常用命令
    CentOS 7 安装 Docker
    kafka-常用脚本2
    Nginx 端口被占用(0.0.0.0:443 failed (98: Address already in use))
    nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)
    检查Nginx 配置文件出否有问题
    Python2 安装虚拟环境
    记录 | 程序员技术博客平台推荐和选取
  • 原文地址:https://www.cnblogs.com/kootimloe/p/13332308.html
Copyright © 2020-2023  润新知