当前位置 : 主页 > 网络编程 > JavaScript >

一些数据类型的判断

来源:互联网 收集:自由互联 发布时间:2021-06-30
gistfile1.txt /** * 对象数据类型的判断 */// Object.prototype.toString() Object.prototype.toString.call(1); // "[object Number]"Object.prototype.toString.call(null); // "[object Null]"// typeof 缺点是除 function 外的引用类型
gistfile1.txt
/**
 * 对象数据类型的判断
 */

// Object.prototype.toString() 
Object.prototype.toString.call(1);  // "[object Number]"
Object.prototype.toString.call(null);    // "[object Null]"


// typeof 缺点是除 function 外的引用类型都统一为 "object"
typeof null;    // "object"
typeof {};  // "object"
typeof NaN; // "number" 这个也是个坑


// instanceof 可用于区别 null 和 object
null instanceof Object; // false

// 一个判断数据类型(包括 es6 的 Set 和 Map 对象)的函数
function getType(value) {
    let type = Object.prototype.toString.call(value).match(/^\[object (.*)\]$/)[1].toLowerCase();
    if ( type === 'string' && typeof type === 'object' ) {
        return 'object';
    }
    // PhantomJS has type "DOMWindow" for null
    if ( type === null ) {
        return 'null';
    }
    // PhantomJS has type "DOMWindow" for undefined
    if ( type === undefined ) {
        return 'undefined';
    }
    return type;
}
网友评论