|
|
/**
|
|
* 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);
|
|
};
|