1.修改this的指向
封装函数 f,使 f 的 this 指向指定的对象
// 方法1:function bindThis(func, oTarget) { return function(){ return func.apply(oTarget, arguments); };}// 方法2function bindThis(f, oTarget) { return f.bind(oTarget);}
2.获取 url 中的参数
- 指定参数名称,返回该参数的值 或者 空字符串
- 不指定参数名称,返回全部的参数对象 或者 {}
- 如果存在多个同名参数,则返回数组
输入:getUrlParam('http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe', 'key')
输出:[1, 2, 3]function getUrlParam(sUrl,sKey){ var result = {}; sUrl.replace(/\??(\w+)=(\w+)&?/g,function(a,k,v){ if(result[k] !== void 0){ var t = result[k]; result[k] = [].concat(t,v); }else{ result[k] = v; } }); if(sKey === void 0){ return result; }else{ return result[sKey] || ''; }}
3.dom结点查找
查找两个节点的最近的一个共同父节点,可以包括节点自身
function commonParentNode(oNode1, oNode2) { if(oNode1.contains(oNode2)){ return oNode1; } else if(oNode2.contains(oNode1)){ return oNode2; } else{ return arguments.callee(oNode1.parentNode,oNode2); }}
4.邮箱字符串判断
判断输入是否是正确的邮箱格式
function isAvailableEmail(sEmail) { var reg = /^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/; return reg.test(sEmail);}
5.数组去重
Array.prototype.uniq = function() { var arr = []; var flag = true; for (var i = 0; i < this.length; i++) { if (arr.indexOf(this[i]) == -1) { // 如果没有找到indexOf会返回-1 if (this[i] != this[i]) { //排除 NaN if (flag) { arr.push(this[i]); flag = false; } } else { arr.push(this[i]); } } } return arr;}
6.斐波那契数列
用 JavaScript 实现斐波那契数列函数,返回第n个斐波那契数。 f(1) = 1, f(2) = 1 等
function fibonacci(n) { // 0 1 1 2 3 5 8 // 0 1 2 3 4 5 6 if (n == 0 || n == 1) { return n; } return fibonacci(n-1) + fibonacci(n-2);}
7.将字符串转换为驼峰
比如:font-size -> fontSize
function cssStyle2DomStyle(sName) { var arr = sName.split(''); //判断第一个是不是 '-',是的话就删除 if(arr.indexOf('-') == 0) arr.splice(0,1); //处理剩余的'-' for(var i=0; i