00001 var baseKeys = require('./_baseKeys'), 00002 getTag = require('./_getTag'), 00003 isArguments = require('./isArguments'), 00004 isArray = require('./isArray'), 00005 isArrayLike = require('./isArrayLike'), 00006 isBuffer = require('./isBuffer'), 00007 isPrototype = require('./_isPrototype'), 00008 isTypedArray = require('./isTypedArray'); 00009 00011 var mapTag = '[object Map]', 00012 setTag = '[object Set]'; 00013 00015 var objectProto = Object.prototype; 00016 00018 var hasOwnProperty = objectProto.hasOwnProperty; 00019 00053 function isEmpty(value) { 00054 if (value == null) { 00055 return true; 00056 } 00057 if (isArrayLike(value) && 00058 (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || 00059 isBuffer(value) || isTypedArray(value) || isArguments(value))) { 00060 return !value.length; 00061 } 00062 var tag = getTag(value); 00063 if (tag == mapTag || tag == setTag) { 00064 return !value.size; 00065 } 00066 if (isPrototype(value)) { 00067 return !baseKeys(value).length; 00068 } 00069 for (var key in value) { 00070 if (hasOwnProperty.call(value, key)) { 00071 return false; 00072 } 00073 } 00074 return true; 00075 } 00076 00077 module.exports = isEmpty;