UNPKG

1.14 kBJavaScriptView Raw
1"use strict";
2var 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
19var number = 0;
20utils.guid = function() {
21 return number++;
22};
23
24utils.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
35utils.isArray = function(obj) {
36 return {}.toString.call(obj) === '[object Array]';
37};
38
39utils.isObject = function(obj) {
40 return {}.toString.call(obj) === '[object Object]';
41};
42
43utils.indexOf = function(elem, arr) {
44 if (utils.isArray(arr)) {
45 return arr.indexOf(elem);
46 }
47};
48
49utils.keys = Object.keys;
50utils.now = Date.now;
51
52module.exports = utils;