JS 代码模式1
来源:互联网 发布:数据库设计各阶段任务 编辑:程序博客网 时间:2024/06/03 15:20
// Warning: doesn't pass JSLintvar i, hasOwn = Object.prototype.hasOwnProperty;for (i in man) if (hasOwn.call(man, i)) { // filter console.log(i, ":", man[i]);}
function func() { var a = 1, b = 2, sum = a + b, myobject = {}, i, j; // function body... }好处:1.在函数的统一的区域可以查找到所有的局部变量
2.防止在定义前使用变更错误
3.使全局变量出现的可能性缩小,增强代码可读性
4.更少的代码for循环
对于下面循环方式是非常低效的,特别对于HTMLCollections对象,因为每一次遍历都要重新计算length,推荐把length用变量缓存起来
// sub-optimal loop1
for (var i = 0; i < myarray.length; i++) {
// do something with myarray[i]
}
HTMLCollections are objects returned by DOM methods such as:
• document.getElementsByName()
• document.getElementsByClassName()
• document.getElementsByTagName()
document.images
document.links
document.forms
document.forms[0].elements高效方式
for (var i = 0, max = myarray.length; i < max; i++) {
// do something with myarray[i]
}
当遍历一个对象的属性时,可以使用hasOwnProperty方法进行过滤。例如:
// the objectvar man = { hands: 2, legs: 2, heads: 1};// 为object增加clone方法if (typeof Object.prototype.clone === "undefined") { Object.prototype.clone = function () {};}for (var i in man) { if (man.hasOwnProperty(i)) { // filter console.log(i, ":", man[i]); }}/*result in the consolehands : 2legs : 2heads : 1*/// 反模式// for-in loop without checking hasOwnProperty()for (var i in man) { console.log(i, ":", man[i]);}/*result in the consolehands : 2legs : 2heads : 1clone: function()*/
如果man对象有hasOwnProperty同名方法会出现问题,利用如下方法解决
for (var i in man) { if (Object.prototype.hasOwnProperty.call(man, i)) { // filter console.log(i, ":", man[i]); }}也可以将Object.prototype.hasOwnProperty;进行缓存:var i, hasOwn = Object.prototype.hasOwnProperty;for (i in man) { if (hasOwn.call(man, i)) { // filter console.log(i, ":", man[i]); }}
也可以把for与if写在一起
- JS 代码模式1
- JS 代码模式
- js图片幻灯片模式切换代码
- 【JS设计模式】状态模式的代码示例
- 【JS设计模式】策略模式的代码示例
- 【JS设计模式】责任链模式的代码示例
- 【JS设计模式】访问者模式的代码示例
- 【JS设计模式】调停者模式代码示例
- 【JS设计模式】解释器模式代码示例
- 诡异代码-JS-1
- 弹出最简单的模式化遮罩层的js代码
- JS代码复用模式(继承,混合等)
- JS 代码集(1)
- JS常用验证代码-1
- JS代码判断集锦(1)
- js常用代码收集1
- js技巧代码大全(1)
- JS 常用代码(1)
- BusyBox 简化嵌入式 Linux 系统
- 操作系统c语言版的处理机调度
- Andorid x86博客网址推荐
- ASP.NET AJAX入门系列:使用ScriptManagerProxy控件
- delphi中覆盖最大化消息
- JS 代码模式1
- 映射需要的属性
- 微软Windows Speech SDK编程入门
- C#中逐行向txt中写字符串
- 过滤器的理解
- 图和网络分析重要库简介
- 实现基于Ajax的无限级菜单
- findViewById返回null的诡异情况
- BASH系列之五循环语句