美文网首页
JS中对象类型的检测

JS中对象类型的检测

作者: 无法找到此用户 | 来源:发表于2016-08-30 17:52 被阅读0次

    检测一个对象是否存在:

    if (typeof myObj === 'undefined') {
        var myObj = {};
    }
    

    可用于检测对象类型的运算符:

    • typeof
      主要对基础数据类型的判断,对引用类型都会返回object
    • instanceof
      左边的运算符必须是一个对象,右边的晕算数是对象类的名字或者构造函数
    • 对象的constructor属性
      每个对象都有constructor属性,起引用了该对象的构造函数
    function isArray (arr) {
        return arr instanceof Array;
    }
    

    也可以通过

    function isArray (arr) {
        return typeof arr === 'object' && arr.constructor === Array;
    }
    

    但是instanceof在某些IE版本中无效,且同一个页面中的不同框架(ifame)不共享prototype,所以最佳实践是:

    if (typeof Array.isArray === 'undefined') {
         Array.isArray = function (arr) {
            return Object.prototpe.toString.call(arr) === '[object Array]'
        } 
    }
    

    一个用于获取对象类型名的通用函数:

    function __getClass (object) {
        return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]&/)[1];
    }
    

    通过拓展,可以编写一个检测的函数:

    function is (type, object) {
        return type === __getClass(object);
    }
    

    相关文章

      网友评论

          本文标题:JS中对象类型的检测

          本文链接:https://www.haomeiwen.com/subject/ktotettx.html