技巧一之setTimeout.
应用案例:比如你想一个函数循环执行10次,怎么办?以前通常是先setInterval,然后clearInterval,技巧一就是克服这个问题

复制代码 代码如下:
(function () {
var i = 0;
function job() {
console.log(i++);
if (i < 10) {
setTimeout(job, 1000);
}
}
job();
})();

上面这个job函数就只会乖乖的执行10次.然后自动停止
技巧二之高效的for循环
应用案例:抛弃传统的循环方式

复制代码 代码如下:
(function () {
var arr=[];
for(var i=arr.length;i--;){
doStuff();
}
})();

这个方式为什么高效?
一:少了一个参数l=arr.length;
二:for语句中间那个玩意少进行了一次计算,以前的话是for(i=0;i<l;i++)这样的话中间的语句会先比较i<l 然后比较出来的结果在
跟true 或者false比较,自然多了次计算
技巧三之高效赋值
应用案例:抛弃传统的if判断赋值

复制代码 代码如下:
var i=1,ret;
ret=i!==1||true;
console.log(ret);

以上代码会很神奇的告诉你ret会是true.高效吧不用if(i!==1)了在赋值了
技巧四之强悍的简短的attr
应用案例:setAttribute,getAttribute.这个方法不仅可以设置标准的属性,还可以设置任意属性,兼容好

复制代码 代码如下:
function attr(elem, name, value) {
var ret;
if (value) {
if (/msie [6-7]\.0/i.test(navigator.userAgent)) {
ret = elem.getAttributeNode(name);
if (!ret) { //ie6 7不合法的属性设置捕鸟,通过这里可以设置
ret = document.createAttribute(name);
elem.setAttributeNode(ret);
}
ret.nodeValue = value + "";
} else {
elem.setAttribute(name, value);
}
return elem;
} else { //ie6 7有得属性获取不鸟
ret = elem.getAttribute(name);
fixIe = elem.getAttributeNode(name).nodeValue;
ret = ret ? ret : fixIe ? fixIe : undefined;
return ret;
}
}

以上方法如何测试呢?
attr(document.getElementById("test"), "classxx", "xx")
alert(attr(document.getElementById("test"),"classxx"));
技巧五之getElementsByClassName.
应用案例 :以前js没什么框架的时候,大家都再模仿这个方法,看看今天我是怎么高效的模仿出它来.这也不愧是js初学者的经典代码

复制代码 代码如下:
(function () {
var getElementsByClassName=function(cls,context){
var root = context || document;
return document.querySelectorAll ? root.querySelectorAll("." + cls) : root.getElementsByClassName ?
root.getElementsByClassName(cls) : help("*", cls, context);
}
var help=function(tagName,cls,context){
var root= context || document,
ret=[],elems,i,
rcls=new RegExp("^|\\s+"+cls+"\\s+|$");
elems = root.getElementsByTagName(tagName || "*");
for(i=elems.length;i--;){
if(rcls.test(elem[i].className)){
ret.push(elems[i]);
}
}
return ret;
}
})();

以上几个js淫荡技巧还是蛮实用的,前提是你没用使用别人的js框架,用原生创造效率为前提的代码.
还是那句话js代码爱好者nothing原创,谢谢大家支持,觉得写得好可以顶下,或者把链接发给朋友

出处至 :脚本之家   http://www.jb51.net/article/29146.htm

最新文章

  1. [转]ASP.NET应用程序生命周期趣谈(三) HttpModule
  2. java关于ArrayList中toArray方法的使用
  3. linux tar
  4. php js =&gt; splice 数组 插入 功能
  5. cannot find module &#39;xml2js&#39;
  6. Toritoisegit记住用户名密码
  7. 编写 Unity Editor 插件
  8. windows防火墙打不开的处理办法
  9. Javascript中typeof instanceof constructor的区别
  10. redis集群部署之codis 维护脚本
  11. linux主要目录的作用
  12. Django使用遇到的各种问题及解决方法
  13. 微信小程序部署问题总结
  14. sql server 提示无法彻底删除_复制-而无法删除数据库或重新配置发布订阅
  15. C/C++语言简介之语言组成
  16. Linux进行AES加密每次结果都不一致并且解密失败报错
  17. python3 购物车 增改查终极版~
  18. gcc生成含有C信息的汇编
  19. MySQL 基础八 用户管理
  20. Where To Buy -- proposed by Renqian Luo

热门文章

  1. linux文件名乱码时删除或改名的方式(转载)
  2. 你想要的sublime、webstorm、vi/vim不得不用的快捷键【简报】【实用】
  3. [C++11新特性] 智能指针详解
  4. Stamps ans Envelope Sive UVA - 242
  5. 题解报告:hdu 1062 Text Reverse
  6. Oracle10g的imp命令
  7. *关于TCP长连接,NAT超时,心跳包
  8. poj2661Factstone Benchmark
  9. UnixTime的时间戳的转换
  10. 关于使用myeclipse搭建tomcat环境运行web项目的方法