• JavaScript 学习之 instanceOf, typeOf 运算符


    JavaScript的类型,分成原生类型和对象。其中,null, undefined, boolean(true, false), number, string是原生类型,而其他的都是对象(包括数组、类、函数)。而instanceOf是一个二元操作符,左侧是一个对象,右侧是对象的类型。所以把原生类型放在左右侧都是不合适的,instanceOf会返回false。


    如下的例子帮助理解:

            function test_instaceOf() {
    
                var num = 1;
                console.log(num instanceof Number);             // false*
                console.log(num instanceof Object);             // false*
                console.log(Number(num) instanceof Number);     // false*
                console.log(Number(num) instanceof Object);     // false*
                console.log(1 instanceof Number);               // false*
                console.log(NaN instanceof Number);             // false*
                console.log("" instanceof String);              // false*
                console.log(String("abc") instanceof String);   // false*
    
                console.log(new Number(num) instanceof Number);     // true
                console.log(new Number(num) instanceof Object);     // true
                console.log(new Number(1) instanceof Number);       // true
                console.log(new Number(NaN) instanceof Number);     // true
                console.log(new String("") instanceof String);      // true
                console.log(new String("abc") instanceof String);   // true
    
                console.log({} instanceof Object);              // true
                console.log([] instanceof Object);              // true
                console.log([] instanceof Array);               // true
    
                console.log(new Object(null) instanceof Object);   // true
                console.log(null instanceof Object);               // false
                console.log(undefined instanceof Object);          // false
    
                try {
                    console.log(undefined instanceof undefined);
                } catch (e) {
                    console.log("exception");                   // exception!
                }
            }
    
    注意,只有使用了new关键字,才能把原生类型正真转换成对象(相当于wrap在对象里面),而简单的类型转换(用Number, String)是没用的。

    另外, typeOf操作符,是一元操作符,可以用来检测原生类型,他接受任意类型,返回的是一个字符串(小写):

            function test_typeof() {
                console.log(typeof 1);                              // number
                console.log(typeof true);                           // boolean
                console.log(typeof "string");                       // string
                console.log(typeof new Date(2001, 1, 1));           // object
                console.log(typeof new RegExp("reg expression"));   // object
                console.log(typeof function () { });                // function
                console.log(typeof {});                             // object
                console.log(typeof []);                             // object
                console.log(typeof null);                           // object
                console.log(typeof undefined);                      // undefined
                console.log(typeof NaN);                            // number
            }



  • 相关阅读:
    根据实体中一个属性值查找实体数组中的所有实体并放到list中
    asp.net ajax 客户端框架未能加载 sys 未定义
    SYS_CONNECT_BY_PATH函数用法 ORACLE
    滚动条小结 平时容易忘记的小东西 JAVASCRIPT
    ORACLE 和 SQL 分别实现递归的方法
    JS 获取控件的绝对位置
    GridView内控件获取所在行的信息
    sql server 使用for xml path 将1列多行转换为字符串连接起来
    ORACLE 行转列 及函数定义
    子窗口刷新父窗口 javascript 并调用父窗口函数
  • 原文地址:https://www.cnblogs.com/puncha/p/3876970.html
Copyright © 2020-2023  润新知