1. 程式人生 > >Jquery之isPlainObject源碼分析

Jquery之isPlainObject源碼分析

才有 obj location mce del 判斷 all gpo cti

今天對Jquery中 isPlainObject 源碼分析。

1. isPlainObject 方法的作用:

  用來判斷傳入參數,是否是對象。

2. 源碼分析:isPlainObject: function( obj ) {

   
// 1. jQuery.type( obj ): 通過 juery 封裝的類型判斷方法,如果不是 Object類型,返回false
// 2.
obj.nodeType : 用來判斷是否是dom 節點, 如果是,返回 false
// 3.
jQuery.isWindow( obj ) : 這個方法,很多人可能會誤解其意思。 其真正意思是:判斷指定參數是否是一個窗口,"窗口"就是瀏覽器內置的Window對象。 如果是,返回false.
  //
4. 總的來說,這個if判斷的意思就是, 如果 傳進來的是 不是 object對象 或者 dom節點 或者 “窗口” 就返回 false;
if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
      return false;
}

   try {
      // 此if判斷法: 主要是 防止把 “window.location” 當成 Obect 對象。
// 1.
obj.constructor : 判斷 入參是否 具有 構造函數。
// 2.
core_hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) : 判斷傳入obj 的原型鏈上是否有 ”
isPrototypeOf“ 方法。 如果有則是 object 對象,返回 ture; 註意:只有 Object 對象的原型鏈上才有 isPrototypeOf 這個方法。
      if ( obj.constructor &&
!core_hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
return false;
}
} catch ( e ) {
return false;
}

// 返回 ture;
return true;
},

Jquery之isPlainObject源碼分析