美文网首页
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