jQuery中的isPlanObject()函數(shù)是一個(gè)非常有用的函數(shù),它用于判斷一個(gè)對象是否是普通的JavaScript對象。在JavaScript中,對象可以有很多種形式,比如數(shù)組、函數(shù)等等。而isPlanObject()函數(shù)主要是用于判斷一個(gè)對象是否是一個(gè)普通的鍵值對對象。
//示例1 var obj = {}; console.log($.isPlainObject(obj)); // 輸出 true //示例2 var arr = []; console.log($.isPlainObject(arr)); // 輸出 false //示例3 var fun = function() {}; console.log($.isPlainObject(fun)); // 輸出 false
我們可以看到,示例1中的obj對象是一個(gè)普通的對象,而示例2中的數(shù)組、示例3中的函數(shù)都不是一個(gè)普通的對象。
isPlanObject()函數(shù)的內(nèi)部實(shí)現(xiàn)主要是判斷傳入的對象是否有自己的構(gòu)造函數(shù)(即Object.prototype.constructor),如果沒有,那么就是一個(gè)普通的對象。
//isPlainObject()函數(shù)的內(nèi)部實(shí)現(xiàn) function isPlainObject(obj) { var class2type = {}; var toString = class2type.toString; var hasOwn = class2type.hasOwnProperty; var support = {}; var key, Ctor; if (!obj || toString.call(obj) !== "[object Object]") { return false; } Ctor = obj.constructor; return typeof Ctor === "function" && hasOwn.call(Ctor.prototype, "isPrototypeOf"); }
總之,isPlanObject()函數(shù)可以為我們判斷一個(gè)對象是否是一個(gè)普通的鍵值對對象提供很大的方便,是我們經(jīng)常使用的一個(gè)函數(shù)。