JavaScript轻松创建级联函数的方法示例


Posted in Javascript onFebruary 10, 2017

一、级联函数是什么?

在一行代码上,调用一个接一个的方法。这种技术在 JQuery 或者其他 JavaScript 库中是非常常见的。
代码如下:

$('#myDiv').fadeOut().html('帅哥, 你好!').fadeIn();

或者:

myStr1.replace('k', 'R').toUpperCase().substr(0,4);

这种代码让我们能像阅读文字一样来阅读代码,不仅简洁,可读性强更便于维护,提高开发效率。

那怎么用呢?

要使用级联函数,我们必须在每个函数中返回 this 对象(也就是后面方法中操作的对象)。现在我们开始创建个级联函数:

var usresData = [
 {firstName: 'Zhang', lastName: 'San', email: '111@qq.com', id: 102},
 {firstName: 'Li', lastName: 'Si', email: '222@qq.com', id: 103},
 {firstName: 'Wang', lastName: 'Wu', email: '333@qq.com', id: 105}
];

function getCaseName(str) {
 return str.replace(/\w\S*/g, function(txt){
  return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
 })
}

接下来我们定义个包含级联函数的对象:

var userController = {
 currentUser = '',
 findUser = function (userEmail) {
  var arrayLength = usersData.length, i;
  for (i = arrayLength - 1; i >= 0; i--) {
   if (usersData[i].email === userEmail) {
    this.currentUser = usersData[i];
    break;
   }
  }
  return this;
 },
 formatName: function () {
  if (this.currentUser) {
   this.currentUser.fullName = getCaseName(this.currentUser.firstName) + ' ' + getCaseName(this.currentUser.lastName);
  }
  return this;
 },
 createLayout: function () {
  if (this.currentUser) {
   this.currentUser.viewData = '<h2>成员: ' + this.currentUser.fullName + '</h2>'​
   + '<p>ID: ' + this.currentUser.id + '</p>' + '<p>Email: ' + this.currentUser.email + '</p>';
  }
  return this;
 },
 displayUser: function () {
  if (!this.currentUser) return;
  $('.members-wrapper').append(this.currentUser.viewData);
 }
}

定义完了级联函数,我们调用的时候就会非常的优雅了:

userController.findUser('111@qq.com').formatName().createLayout().displayUser();

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
javascript实现 在光标处插入指定内容
May 25 Javascript
理解 JavaScript 预解析
Oct 25 Javascript
jQuery $.each的用法说明
Mar 22 Javascript
javascript基础第一章 JavaScript与用户端
Jul 22 Javascript
实现web打印的各种方法介绍及实现代码
Jan 09 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
Apr 09 Javascript
解析JavaScript中的不可见数据类型
Dec 02 Javascript
Javascript学习指南
Dec 01 Javascript
vue解决使用webpack打包后keep-alive不生效的方法
Sep 01 Javascript
javaScript中indexOf用法技巧
Nov 26 Javascript
JavaScript中的惰性载入函数及优势
Feb 18 Javascript
jQuery实现电梯导航模块
Dec 22 jQuery
JS实现的数字格式化功能示例
Feb 10 #Javascript
Vue.js 2.0窥探之Virtual DOM到底是什么?
Feb 10 #Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
Feb 10 #Javascript
BootStrap Datetimepicker 汉化的实现代码
Feb 10 #Javascript
解决URL地址中的中文乱码问题的办法
Feb 10 #Javascript
tablesorter.js表格排序使用方法(支持中文排序)
Feb 10 #Javascript
jquery.tableSort.js表格排序插件使用方法详解
Aug 12 #Javascript
You might like
利用PHP制作简单的内容采集器的原理分析
2008/10/01 PHP
解析php框架codeigniter中如何使用框架的session
2013/06/24 PHP
PHP curl 获取响应的状态码的方法
2014/01/13 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
PHP的微信支付接口使用方法讲解
2019/03/08 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
2019/05/20 PHP
Javascript简单实现可拖动的div
2013/10/22 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
js实现对table动态添加、删除和更新的方法
2015/02/10 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
AngularJS中的promise用法分析
2017/05/19 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
JavaScript之创意时钟项目(实例讲解)
2017/10/23 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
2019/12/12 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
2020/07/21 Javascript
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
python类继承与子类实例初始化用法分析
2015/04/17 Python
python开发之for循环操作实例详解
2015/11/12 Python
Python编程中归并排序算法的实现步骤详解
2016/05/04 Python
Django自定义插件实现网站登录验证码功能
2017/04/19 Python
python利用lxml读写xml格式的文件
2017/08/10 Python
用什么库写 Python 命令行程序(示例代码详解)
2020/02/20 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
video下autoplay属性无效的解决方法(添加muted属性)
2020/05/19 HTML / CSS
Canvas在超级玛丽游戏中的应用详解
2021/02/06 HTML / CSS
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
2014政务公开实施方案
2014/02/19 职场文书
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
简易离婚协议书范本
2014/10/24 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
2021/08/30 Java/Android