美文网首页
jQuery 中 isPlainObject() 详解

jQuery 中 isPlainObject() 详解

作者: Yanz2018 | 来源:发表于2018-03-09 16:27 被阅读0次

    $.isPlainObjcet(平凡对象定义)

    isPlainObject: function( obj ) {
        var proto, Ctor;
    
        // null 不是一个平凡对象
        // 调用 toString() 方法输出对象,判断 obj 至少是一个对象
        if( !obj || toString.call( obj ) !== "[object Object]" ) {
          return false;
        }
        
        proto = getProto( obj );
    
        // Object.create(null) 创建的对象为 {},但是无 __proto__ 属性,也是平凡对象
        if( !proto ) {
          return true;
        }
    
        // 如果有原型,则原型里必须有构造对象并且构造对象只能是 Object()
        Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
        return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
      }
    

    总结:

    • null 不是平凡对象;
    • Object.create(null) 是平凡对象;
    • 若有原型,则原型里必须有构造对象 constructor,并且 constructor 必须是 Object,例如:{} 就是平凡对象,而 $("#div") 就不是平凡对象,因为$()._proto_.constructor 为 jQuery

    相关文章

      网友评论

          本文标题:jQuery 中 isPlainObject() 详解

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