JavaScript 函数(方法)的封装技巧要领及其重要性
作为一枚程序猿,想必没有人不知道函数封装吧。在一个完整的项目开发中,我们会在JS代码中对一些常用(多个地方调用)的操作进行一个函数的封装,这样便于我们调试和重复调用,以致于能够在一定程度上减少代码的冗余,从而降低浏览器对JS代码的读取时间,增加我们项目程序的工作效率。因此,可以说,函数方法封装是一个程序猿的必备技能。那么,封装时应该注意什么呢?——我的答案是:灵活性。
这样,我们先来进行一个简单的测试:
1.在浏览器中console一句Hello World!,代码如下:
console.log('Hello World!');
2.在浏览器中console五句Hello World!,这时,又有多种方法:
// 方法一:
console.log('Hello World!');
console.log('Hello World!');
console.log('Hello World!');
console.log('Hello World!');
console.log('Hello World!'); // 方法二:
for(var i = 0;i<5;i++){
console.log('Hello World!');
}
PS:从上述两种方法来看,都能达到相同的效果,但有没有觉得方法一的代码有点烦杂呢?好的,那我们继续接着往下走:
3.在1和2的基础之上,将五句Hello World!翻译为:你好,世界!这样一来,又会有很多方法涌出,如:直接修改console里面的内容,但是我想说的是,利用2中的方法二结合函数生成:
function myFn(){
for(var i=0;i<5;i++){
console.log(“你好,世界!”);
}
}
myFn();
// 这种方法便有了一个函数方法的产生
PS:这样,函数就使得我们代码更加简洁(可能暂时还看不出),OK,我们接着往下走:
4.在3的基础上,将‘你好,世界!’翻译为:Hello World!很明显,这时我们console的内容又变了,也就是说,console的内容不是一尘不变的,那么怎样才能使得3中的函数调用更加灵活呢?
function myFn(str){
for(var i=0;i<5;i++){
console.log(str);
}
}
myFn(‘你好,世界!’);
// 这种方法又产生了一个新的东西——参数
5.OK,很好,是不是很简单呢?现在我们来一点难度:
在4的基础上简单地修改函数内部内容,在浏览器中console出50句‘世界我爱你’,很多人都会想到,将循环次数更改为50,然后再调用,也就是说循环次数也应该是一个参数:
function myFn(str,num){
for(var i=0;i<num;i++){
console.log(str);
}
}
myFn('你好,世界!',50);
// 这样一来,便形成了一个简单的函数封装
// 倘若现在题目要求 在浏览器中console出1000句‘I LOVE YOU’
// myFn('I LOVE YOU',1000); 是不是So easy?
现在,我们来仔细分析一下这个小测试,题目给出的console内容以及console的次数都是可变的,那么我就可以进行一个函数的封装。
这样一来,无论你题目要求我们console什么,console几次,只需调用该函数,并传入指定内容及次数,也就是说除去函数封装内容,我们只需一行代码就能达到题目给的要求,是不是很简单呢?这便是函数封装的简洁性和灵活性,所以,猿友们,我们在项目开发中对代码进行封装时,一定要注意:灵活性!多思考多变的地方,让多变的地方用参数代替,另外,还要注意在项目运营中该段代码的可运用性,如何减低运营成本,这都是我们在封装时应当去思考的问题。
JavaScript 函数(方法)的封装技巧要领及其重要性的更多相关文章
- javascript 函数 方法
函数 1.函数的定义 (1)function 函数名(x){ 函数执行体; } (2)var 函数名=function(x){ 函数执行体; }; 这种方法说明,在javascript中,函数就是一种 ...
- JavaScript 函数方法 - toString()
Function.prototype.toString() 返回函数代码的字符串形式. 描述 Function 对象覆盖了从 Object 继承来的 Object.prototype.toString ...
- JavaScript 函数方法 - bind()
Function.prototype.bind() ECMAScript5中新增的方法,但是在ECMAScript3可以通过模仿实现其方法作用 作用: bind() 方法会创建一个新函数,当这个新函数 ...
- 在Swift中使用JavaScript的方法和技巧
本文作者Nate Cook是一位独立的Web及移动应用开发者,是继Mattt大神之后NSHipster的主要维护者,也是非常知名活跃的Swift博主,并且还是支持自动生成Swift在线文档的Swift ...
- ABP+AdminLTE+Bootstrap Table权限管理系统第七节--登录逻辑及abp封装的Javascript函数库
经过前几节,我们已经解决数据库,模型,DTO,控制器和注入等问题.那么再来看一下登录逻辑.这里算是前面几节的一个初次试水. 首先我们数据库已经有的相应的数据. 模型和DTO已经建好,所以我们直接在服务 ...
- JavaScript使用方法和技巧大全
有些时候你精通一门语言,但是会发现你其实整天在和其它语言打交道,也许你以为这些微不足道,不至于影响你的开发进度,但恰恰是这些你不重视的东西会浪费你很多时间,我一直以为我早在几年前就已经精通Ja ...
- ABP+AdminLTE+Bootstrap Table权限管理系统第七节--登录逻辑及几种abp封装的Javascript函数库
返回总目录:ABP+AdminLTE+Bootstrap Table权限管理系统一期 简介 经过前几节,我们已经解决数据库,模型,DTO,控制器和注入等问题.那么再来看一下登录逻辑.这 ...
- JavaScript函数使用技巧
JavaScript中的函数是整个语言中最有趣的一部分,它们强大而且灵活.接下来,我们来讨论JavaScript中函数的一些常用技巧: 一.函数绑定 函数绑定是指创建一个函数,可以在特定的this环境 ...
- 深入理解javascript函数系列第三篇——属性和方法
× 目录 [1]属性 [2]方法 前面的话 函数是javascript中的特殊的对象,可以拥有属性和方法,就像普通的对象拥有属性和方法一样.甚至可以用Function()构造函数来创建新的函数对象.本 ...
随机推荐
- 笔记整理:计算CPU使用率 ----linux 环境编程 从应用到内核
linux 提供time命令统计进程在用户态和内核态消耗的CPU时间: [root@localhost ~]# time sleep real 0m2.001s user 0m0.001s sys 0 ...
- My SQL数据库的安装与配置
MySQL是一个关系型数据库管理系统.MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言 MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小.速度快.总体拥有成本低,尤 ...
- Angularjs快速入门(二)
说说上一节的例子,$scope 我们没有创建这个对象,直接绑定就能获取里面的对象,这种风格遵循了一种叫迪米特法则的设计模式. 然后angular还有一种很强大的功能叫“指令”. 就是你可以吧模板编写成 ...
- ASP.Net零碎
ASP.Net零碎 ServerPush 什么是ServerPush,服务器向客户端浏览器“推送”,其实就是“长连接”. 只有浏览器请求服务器端,服务器端才有给浏览器响应数据,不会主动向浏览器推送数据 ...
- .NET面试题系列[17] - 多线程概念(2)
线程概念 线程和进程的区别 进程是应用程序的一个实例要使用的资源的一个集合.进程通过虚拟内存地址空间进行隔离,确保各个进程之间不会相互影响.同一个进程中的各个线程之间共享进程拥有的所有资源. 线程是系 ...
- jQuery库冲突解决办法
一次面试中面试官问到jQuery解决怎么冲突?虽然以前看过,但是我已经不记得了. 我的思路就是如果让我来设计,那我就用一个默认值$,不传参数,那就用$,最后就挂载在window.$上,传参数就用传入名 ...
- keydown - > keypress - > keyup 用法和区别
英文输入法: 事件触发顺序:keydown - > keypress - > keyup 中文输入法: firfox:输入触发keydown,回车确认输入触发keyup chr ...
- PreparedStatement/Statement处理insert update等操作时乱码,以及URL
原文: 在顶目中无意中碰到PreparedStatement 在存DB时出现乱码,困扰了好久终于解决问题 问题代码如下 ps = con.prepareStatement(INSERT_SQL); p ...
- POJ2524并查集水题
Description There are so many different religions in the world today that it is difficult to keep tr ...
- [原创]Nexus5 源码下载、编译、真机烧录过程记录
asop使用清华镜像源https://mirror.tuna.tsinghua.edu.cn/help/AOSP/ 一开始使用每月初始化包的方式因为无法搞定版本的问题,没能通过编译,无奈,老老实实一点 ...