-
Notifications
You must be signed in to change notification settings - Fork 144
/
Copy pathutils.js
52 lines (44 loc) · 1.11 KB
/
utils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
"use strict";
var utils = {};
['forEach', 'some', 'every', 'filter', 'map'].forEach(function(fnName) {
utils[fnName] = function(arr, fn, context) {
if (!arr || typeof arr === 'string') return arr;
context = context || this;
if (arr[fnName]) {
return arr[fnName](fn, context);
} else {
var keys = Object.keys(arr);
return keys[fnName](function(key) {
return fn.call(context, arr[key], key, arr);
}, context);
}
};
});
var number = 0;
utils.guid = function() {
return number++;
};
utils.mixin = function(to, from) {
utils.forEach(from, function(val, key) {
if (utils.isArray(val) || utils.isObject(val)) {
to[key] = utils.mixin(val, to[key] || {});
} else {
to[key] = val;
}
});
return to;
};
utils.isArray = function(obj) {
return {}.toString.call(obj) === '[object Array]';
};
utils.isObject = function(obj) {
return {}.toString.call(obj) === '[object Object]';
};
utils.indexOf = function(elem, arr) {
if (utils.isArray(arr)) {
return arr.indexOf(elem);
}
};
utils.keys = Object.keys;
utils.now = Date.now;
module.exports = utils;