js 判斷是否是空對象
主要思路
我們要考慮到的主要有:js原生對象,宿主對象(瀏覽器上面的)。
首先對于宿主對象
主要判斷是DOM 對象 和是否是window 對象
是否是DOM對象 value.nodeType 是否存在。
是否是window 對象,value != null && value === value.window;
對于這兩種肯定不是空對象。
if(value.nodeType || isWindow(value)){
return false;
}
對于js原生對象
是否本身返回就是false 對于自身返回false 的有 'false','null' ,' "" ','undefined','NaN', '0' 這6中情況
這些顯然不能作為空對象。
然后判斷是否是一個對象 使用 Object.prototype.toString.call(value) === '[object Object]'; 簡稱為 isObject
還有一種判斷,判斷是否擁有 hasOwnPrototype 方法。
if(!value || !isObject(value) || !value.hasOwnPrototype){
return false;
}
如果都不滿足這些情況的話,
需要處理 是否擁有自身屬性,
for(var key in value){
if(value.hasOwnPrototype(key)){
return false;
}
}
完整代碼:
function isEmptyObject(value){
if(value.nodeType || isWindow(value)){
return false;
}
if(!value || !isObject(value) || !value.hasOwnPrototype){
return false;
}
for(var key in value){
if(value.hasOwnPrototype(key)){
return false;
}
}
return true;
}
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!