Jquery之isPlainObject源碼分析
阿新 • • 發佈:2018-02-07
才有 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源碼分析