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()构造函数来创建新的函数对象.本 ...
随机推荐
- 【日常】C++ 的那些“坑” —— delete 与 析构函数 与 virtual 的 9 个小例子
C++中有无数的坑,但毕竟-- 今天就踩到了,也算是基本问题了,记录一下,顺便以后可以考考自己.你也可以猜猜答案,大牛绕行. 0x1 先看这个: #include <stdio.h> #i ...
- [ext4]05 磁盘布局 - 延迟块组初始化
延迟块组初始化,Ext4的新特性.如果对应的特性标识uninit_bg置位,那么inode bitmap和inode tables就不会初始化. 延迟块组初始化特性特性可以减少格式化耗时. 延迟块组初 ...
- 【lucene系列学习四】使用IKAnalyzer分词器实现敏感词和停用词过滤
Lucene自带的中文分词器SmartChineseAnalyzer不太好扩展,于是我用了IKAnalyzer来进行敏感词和停用词的过滤. 首先,下载IKAnalyzer,我下载了 然后,由于IKAn ...
- 最长递增子序列hdu1087
#include<map> #include<set> #include<list> #include<cmath> #include<queue ...
- HTML标签元素分类(HTML基础知识)
HTML标签元素分类 一.按照块级元素还是行内元素分类 块级元素(block-level)和行内元素(inline-level,也叫作"内联"元素). a.块级元素(独占一行) 块 ...
- 在SCIKIT中做PCA 逆运算 -- 新旧特征转换
PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降 ...
- IOS(二)基本控件UIButton、简易动画、transform属性、UIImageView
UIButton //1.设置UIButton 的左右移动 .center属性 获得 CGPoint 来修改x y //1.设置UIButton 的放大缩小 bounds属性 获得CGRect 然后通 ...
- JDK的下载与配置
一.下载JDK 1.进入oracle官网 下载完成后直接运行就能生成jdk文件. 二.配置环境 1.打开环境配置 右击计算机选择属性 选择高级系统数据 点击环境变量 2.配置JAVA_HOME 新建一 ...
- 分享一个超级好用的php程序员工具箱
分享一个超级好用的php程序员工具箱,是由php中文网开发的. 集合了php环境搭建.在线小工具.原生手册.文字与视频教程.问答社区等 (php程序员工具箱 v0.1版本,点此下载:http://ww ...
- Tomcat Server处理一个http请求过程
假设来自客户端的请求为: http://localhost:8080/lizhx/lizhx_index.jsp 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Conne ...