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