作为一枚程序猿,想必没有人不知道函数封装吧。在一个完整的项目开发中,我们会在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 函数(方法)的封装技巧要领及其重要性的更多相关文章

  1. javascript 函数 方法

    函数 1.函数的定义 (1)function 函数名(x){ 函数执行体; } (2)var 函数名=function(x){ 函数执行体; }; 这种方法说明,在javascript中,函数就是一种 ...

  2. JavaScript 函数方法 - toString()

    Function.prototype.toString() 返回函数代码的字符串形式. 描述 Function 对象覆盖了从 Object 继承来的 Object.prototype.toString ...

  3. JavaScript 函数方法 - bind()

    Function.prototype.bind() ECMAScript5中新增的方法,但是在ECMAScript3可以通过模仿实现其方法作用 作用: bind() 方法会创建一个新函数,当这个新函数 ...

  4. 在Swift中使用JavaScript的方法和技巧

    本文作者Nate Cook是一位独立的Web及移动应用开发者,是继Mattt大神之后NSHipster的主要维护者,也是非常知名活跃的Swift博主,并且还是支持自动生成Swift在线文档的Swift ...

  5. ABP+AdminLTE+Bootstrap Table权限管理系统第七节--登录逻辑及abp封装的Javascript函数库

    经过前几节,我们已经解决数据库,模型,DTO,控制器和注入等问题.那么再来看一下登录逻辑.这里算是前面几节的一个初次试水. 首先我们数据库已经有的相应的数据. 模型和DTO已经建好,所以我们直接在服务 ...

  6. JavaScript使用方法和技巧大全

        有些时候你精通一门语言,但是会发现你其实整天在和其它语言打交道,也许你以为这些微不足道,不至于影响你的开发进度,但恰恰是这些你不重视的东西会浪费你很多时间,我一直以为我早在几年前就已经精通Ja ...

  7. ABP+AdminLTE+Bootstrap Table权限管理系统第七节--登录逻辑及几种abp封装的Javascript函数库

    返回总目录:ABP+AdminLTE+Bootstrap Table权限管理系统一期         简介 经过前几节,我们已经解决数据库,模型,DTO,控制器和注入等问题.那么再来看一下登录逻辑.这 ...

  8. JavaScript函数使用技巧

    JavaScript中的函数是整个语言中最有趣的一部分,它们强大而且灵活.接下来,我们来讨论JavaScript中函数的一些常用技巧: 一.函数绑定 函数绑定是指创建一个函数,可以在特定的this环境 ...

  9. 深入理解javascript函数系列第三篇——属性和方法

    × 目录 [1]属性 [2]方法 前面的话 函数是javascript中的特殊的对象,可以拥有属性和方法,就像普通的对象拥有属性和方法一样.甚至可以用Function()构造函数来创建新的函数对象.本 ...

随机推荐

  1. virtual box ubuntu 与Windows共享文件夹

    由于懒得去截图了,直接抛链接.参考链接:http://www.cnblogs.com/lidabo/p/5317024.html 简介概括:首先安装增强功能,接着在virtual box的seting ...

  2. Tarjan-求强连通分量

    知识点-Tarjan 强连通分量:在一个图的子图中,任意两个点相互可达,也就是存在互通的路径,那么这个子图就是强连通分量(或者称为强连通分支).如果一个有向图的任意两个点相互可达,那么这个图就称为强连 ...

  3. 复选框选中删除行(DOM练习)

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  4. 7种创建线程方式,你知道几种?线程系列Thread(一)

    前言 最近特别忙,博客就此荒芜,博主秉着哪里不熟悉就开始学习哪里的精神一直在分享着,有着扎实的基础才能写出茁壮的代码,有可能实现的逻辑有多种,但是心中必须有要有底哪个更适合,用着更好,否则则说明我们对 ...

  5. Android 性能优化——之控件的优化

    Android 性能优化——之控件的优化 前面讲了图像的优化,接下来分享一下控件的性能优化,这里主要是面向自定义View的优化. 1.首先先说一下我们在自定义View中可能会犯的3个错误: 1)Use ...

  6. hadoop+hive+spark搭建(三)

    一.spark安装   因为之前安装过hadoop,所以,在“Choose a package type”后面需要选择“Pre-build with user-provided Hadoop [can ...

  7. phpcms笔记

    一.建立虚拟站点 1.先更改www目录下的站点名称,再找到apache, 打开"Apache2\conf\extra"下的"httpd-vhosts.conf" ...

  8. Spring Cloud构建微服务架构(一)服务注册与发现

    Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁 ...

  9. 再议Unity优化

    0x00 前言 在很长一段时间里,Unity项目的开发者的优化指南上基本都会有一条关于使用GetCompnent方法获取组件的条目(例如14年我的这篇博客<深入浅出聊Unity3D项目优化:从D ...

  10. mysql主从复制-异步复制

    一.创建复制账号:      在Master的数据库中建立一个备份帐户:每个Slave使用标准的MySQL用户名和密码连接master.      进行复制操作的用户会授予REPLICATION SL ...