84 lines
1.1 KiB
JavaScript
84 lines
1.1 KiB
JavaScript
|
|
||
|
/**
|
||
|
* 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);
|
||
|
};
|