/** | |
* HOP ref. | |
*/ | |
var has = Object.prototype.hasOwnProperty; | |
/** | |
* Return own keys in `obj`. | |
* | |
* @param {Object} obj | |
* @return {Array} | |
* @api public | |
*/ | |
exports.keys = Object.keys || function(obj){ | |
var keys = []; | |
for (var key in obj) { | |
if (has.call(obj, key)) { | |
keys.push(key); | |
} | |
} | |
return keys; | |
}; | |
/** | |
* Return own values in `obj`. | |
* | |
* @param {Object} obj | |
* @return {Array} | |
* @api public | |
*/ | |
exports.values = function(obj){ | |
var vals = []; | |
for (var key in obj) { | |
if (has.call(obj, key)) { | |
vals.push(obj[key]); | |
} | |
} | |
return vals; | |
}; | |
/** | |
* Merge `b` into `a`. | |
* | |
* @param {Object} a | |
* @param {Object} b | |
* @return {Object} a | |
* @api public | |
*/ | |
exports.merge = function(a, b){ | |
for (var key in b) { | |
if (has.call(b, key)) { | |
a[key] = b[key]; | |
} | |
} | |
return a; | |
}; | |
/** | |
* Return length of `obj`. | |
* | |
* @param {Object} obj | |
* @return {Number} | |
* @api public | |
*/ | |
exports.length = function(obj){ | |
return exports.keys(obj).length; | |
}; | |
/** | |
* Check if `obj` is empty. | |
* | |
* @param {Object} obj | |
* @return {Boolean} | |
* @api public | |
*/ | |
exports.isEmpty = function(obj){ | |
return 0 == exports.length(obj); | |
}; |