blob: dba9eeb2f2266f740b2250d914254b1e9acd0c7f [file] [log] [blame]
Yang Guo4fd355c2019-09-19 08:59:031
2/**
3 * HOP ref.
4 */
5
6var has = Object.prototype.hasOwnProperty;
7
8/**
9 * Return own keys in `obj`.
10 *
11 * @param {Object} obj
12 * @return {Array}
13 * @api public
14 */
15
16exports.keys = Object.keys || function(obj){
17 var keys = [];
18 for (var key in obj) {
19 if (has.call(obj, key)) {
20 keys.push(key);
21 }
22 }
23 return keys;
24};
25
26/**
27 * Return own values in `obj`.
28 *
29 * @param {Object} obj
30 * @return {Array}
31 * @api public
32 */
33
34exports.values = function(obj){
35 var vals = [];
36 for (var key in obj) {
37 if (has.call(obj, key)) {
38 vals.push(obj[key]);
39 }
40 }
41 return vals;
42};
43
44/**
45 * Merge `b` into `a`.
46 *
47 * @param {Object} a
48 * @param {Object} b
49 * @return {Object} a
50 * @api public
51 */
52
53exports.merge = function(a, b){
54 for (var key in b) {
55 if (has.call(b, key)) {
56 a[key] = b[key];
57 }
58 }
59 return a;
60};
61
62/**
63 * Return length of `obj`.
64 *
65 * @param {Object} obj
66 * @return {Number}
67 * @api public
68 */
69
70exports.length = function(obj){
71 return exports.keys(obj).length;
72};
73
74/**
75 * Check if `obj` is empty.
76 *
77 * @param {Object} obj
78 * @return {Boolean}
79 * @api public
80 */
81
82exports.isEmpty = function(obj){
83 return 0 == exports.length(obj);
84};