extend函数
合并函数,实现将第一个参数之后的所有对象合并至第一个参数对象中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| function extend(dest) { var i, j, len, src; for (j = 1, len = arguments.length; j < len; j++) { src = arguments[j]; for (i in src) { dest[i] = src[i]; } } return dest; }
|
creat函数
creat
函数为Object.create
函数的polyfill
, 创建一个新的对象
1 2 3 4 5 6 7 8 9 10
| var create = Object.create || (function () { function F() {} return function (proto) { F.prototype = proto; return new F(); }; })();
|
bind函数
bind
函数用于绑定函数上下文,类似与Function.prototype.bind
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| function bind(fn, obj) { var slice = Array.prototype.slice; if (fn.bind) { return fn.bind.apply(fn, slice.call(arguments, 1)); } var args = slice.call(arguments, 2); return function () { return fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments); }; }
|
temlape函数
leaflet的简单的模板函数, 支持将对象{a: 'foo', b: 'bar'}
的值填充至'Hello {a}, {b}'
这样的模板字符串
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| var templateRe = /\{ *([\w_\-]+) *\}/g; function template(str, data) { return str.replace(templateRe, function (str, key) { var value = data[key]; if (value === undefined) { throw new Error('No value provided for variable ' + str); } else if (typeof value === 'function') { value = value(data); } return value; }); }
|
isArray函数
判断对象是否为数组的工具函数,与Array.isArray
的功能兼容
1 2 3 4 5 6
| var isArray = Array.isArray || function (obj) { return (Object.prototype.toString.call(obj) === '[object Array]'); };
|
indexOf函数
用于匹配元素出现在数组中的位置,未匹配则返回-1,与Array.indexOf
兼容
1 2 3 4 5 6 7 8 9
| function indexOf(array, el) { for (var i = 0; i < array.length; i++) { if (array[i] === el) { return i; } } return -1; }
|