分享9点个人认为比较重要的javascript 编程技巧
接触和学习JavaScript已有三四年之久,然而在面对前后台数据交互、数据算法等高级编程领域时,仍有许多未知领域需要。即便有所学习,实际应用中的高级技巧知之甚少,甚至很少使用。当被问及JavaScript的知识时,可能只能提及jQuery的一些技巧,谈及编程则语塞。有必要将某些技巧作为编程习惯固定下来,以备日后之用。
以下是值得关注的几个JavaScript编程技巧:
1. 巧妙运用判断
在JavaScript中,NaN、undefined、Null、0、""在转换为布尔值时均为false。可以使用以下方式简化判断:
`if(!obj) {}`
这一技巧可以省去许多复杂的判断逻辑,如`obj==null || obj == NaN ...`等。
2. 巧妙运用运算符
获取时间戳的一个经典技巧是:
`var dataspan = new Date() - 0;`
利用JavaScript的弱类型特性,Date()返回的是表示时间的字符串,通过算术运算即可得到时间戳。
3. 巧妙运用正则表达式
使用正则表达式时,可以这样操作:
`/.a/ig.exec('xsas')`
相当于创建一个reg对象,并调用exec方法。还可以使用test()、match()等方法。
4. 获取数组最大值和最小值
可以通过以下方式获取数组的最大值:
`var values = [1,2,3,40,23]; var max = Math.max.apply(Math,values);`
使用Max.apply方法,并传递一个数组作为参数,即可找到最大值。
5. 内存优化
对于不再使用的对象,手动解除其引用以进行内存优化:
`function p(){this.p='moersing'}; var p1 = new p(); p1.; p1=null;`
6. 原型模式创建对象
原型模式是一种受欢迎的创建对象的方式:
`function c(){ this.name ='moersing'; this.age=18; this.books=['javascript develop','C develop']; } c.prototype={ displayBookName:function (){ /.../ } }` 原型模式的缺点是引用类型的共享。应将引用类型定义在构造函数中,通用方法则定义在原型中。 7.块级作用域和私有变量
介绍私有变量与DOM之NodeList的秘密
让我们一起编程世界中的两大主题:私有变量和DOM中的NodeList。这两者在编程中扮演着重要角色,了解它们能提升我们的编程技能与效率。
一、私有变量:隐私的守护者
私有变量是如何保护数据的秘密性呢?我们可以创建一个函数,在这个函数内部声明一个变量,然后通过定义一个方法来返回这个变量的值。代码示例如下:
```javascript
function privateSpace() {
var name = 'moersing'; // 这是我们的私有变量
this.getName = function() { // 定义一个方法返回私有变量的值
return name;
}
}
```
私有变量实际上是利用函数的作用域作为限制,外部无法直接访问。通过这种方式,我们可以保护数据的隐私性。
二、DOM中的NodeList:动态的元素世界
NodeList是一个动态的元素集合。这意味着,当你在文档中添加任何元素时,NodeList都会实时更新。例如,以下的代码会导致无限循环:
```javascript
var alldiv = document.getElementsByTagName('div'); // 获取所有的div元素
for(var i=0; i var div = document.createElement('div'); divnerHTML = i.toString(); document.body.appendChild(div); } ``` 这是因为每次添加新的div元素后,alldiv的长度都会立即更新,导致循环无法正确结束。为了解决这个问题,我们可以预先获取长度值,或者在循环外部操作NodeList。HTML5中的新API——selector API Level1也能帮助我们解决这个问题。这个API返回的NodeList是及时的、非动态的DOM集合。例如: ```javascript var allDiv = document.querySelectorAll('div'); // 使用新的API获取所有的div元素 for(var i=0; i // 循环操作... } ``` 三、DOM性能:优化你的代码运行效率 在操作DOM时,我们需要注意性能问题。频繁操作NodeList会导致性能下降,因为每次操作都会执行一次DOM树的查询。给对象的innerHTML赋值也会调用内置的C++器字符串,虽然速度很快,但频繁操作也会影响性能。我们可以通过预先拼接字符串再赋值给innerHTML来提高性能。关于性能优化的话题,我们将在后续的博客中深入。 本文至此已经圆满结束,但愿各位读者能够喜欢并深感共鸣。我们希望通过这篇文章与你们共享一些有价值的见解和启发。这篇文章在表达观点的也试图激发你们深入思考和更多可能性。我们希望我们的话语能够触动你们的心灵,让你们在阅读的过程中感受到我们的热情和真诚。我们期待着你们的反馈和建议,因为我们相信每一次交流都能带来新的启示和成长。 我们试图通过深入浅出的方式,将复杂的概念和理论变得易于理解。我们希望通过我们的笔触,将知识和智慧传递给每一个读者。我们希望你们在阅读的过程中,不仅能够获得新的知识和见解,更能够感受到我们对知识的热爱和对智慧的追求。我们相信,只有不断学习、不断,才能不断进步、不断成长。 无论是关于生活的思考,还是对于世界的认知,我们都希望通过这篇文章引发你们的思考和共鸣。我们希望通过我们的努力,为你们带来一份精神的盛宴,让你们在阅读的过程中感受到知识的力量和智慧的魅力。我们相信,每一篇文章都是一次心灵的对话,每一次阅读都是一次精神的旅行。 在这个瞬息万变的时代,我们需要不断地学习新知识、新技能,以适应这个时代的变革。我们希望通过我们的努力,帮助你们更好地适应这个时代的变革,更好地面对未来的挑战。我们相信,只有不断学习、不断进步,我们才能在未来的道路上走得更远、更稳。 至此,本文已经画上了圆满的句号。希望这篇文章能够给你们带来一些启示和帮助。我们也期待着你们的反馈和建议,让我们共同学习、共同成长。愿你们在阅读的过程中感受到知识的力量和智慧的魅力,让我们一起开启一段美好的精神之旅。 以上便是本文的全部内容了,愿你们喜欢并有所收获。让我们期待下一次的交流与分享吧!cambrian.render('closing')
平面设计师
- 分享9点个人认为比较重要的javascript 编程技巧
- JavaScript中的Function函数
- 微信小程序前端promise封装代码实例
- ASP.NET中常见文件类型、扩展名、存放位置及用途
- layer弹窗插件操作方法详解
- webpack组织模块打包Library的原理及实现
- vue项目中实现图片预览的公用组件功能
- 手把手教你使用TypeScript开发Node.js应用
- jQuery实现图像旋转动画效果
- nodejs 简单实现动态html的方法
- asp正则表达式使用详解
- Bootstrap基本插件学习笔记之标签切换(17)
- 通达OA 使用Ajax和工作流插件实现根据人力资源系
- VUE v-for循环中每个item节点动态绑定不同函数的实
- JavaScript实现斗地主游戏的思路
- 轻松掌握JavaScript中介者模式