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 相关文章推荐
点击弹出层效果&amp;弹出窗口后网页背景变暗效果的实现代码
Feb 10 Javascript
解释&amp;&amp;和||在javascript中的另类用法
Jul 28 Javascript
js用拖动滑块来控制图片大小的方法
Feb 27 Javascript
JS实现alert中显示换行的方法
Dec 17 Javascript
jQuery Chart图表制作组件Highcharts用法详解
Jun 01 Javascript
jQuery异步提交表单的两种方式
Sep 13 Javascript
Bootstrap CSS组件之按钮组(btn-group)
Dec 17 Javascript
JavaScript之filter_动力节点Java学院整理
Jun 28 Javascript
vue页面使用阿里oss上传功能的实例(一)
Aug 09 Javascript
Vuejs实现购物车功能
Nov 05 Javascript
微信小程序使用canvas的画图操作示例
Jan 18 Javascript
js实现弹窗效果
Aug 09 Javascript
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
模仿OSO的论坛(三)
2006/10/09 PHP
php下封装较好的数字分页方法
2010/11/23 PHP
PHP不用递归遍历目录下所有文件的代码
2014/07/04 PHP
PHP中soap的用法实例
2014/10/24 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
jQuery对象和DOM对象使用说明
2010/06/25 Javascript
jQuery 源码分析笔记(5) jQuery.support
2011/06/19 Javascript
jquery Moblie入门—hello world的示例代码学习
2013/01/08 Javascript
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
在javascript中执行任意html代码的方法示例解读
2013/12/25 Javascript
javascript实现检验的各种规则
2015/07/31 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
Nodejs 搭建简单的Web服务器详解及实例
2016/11/30 NodeJs
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
JS实现HTML页面中动态显示当前时间完整示例
2018/07/30 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
JavaScript实现横版菜单栏
2020/03/17 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
2020/10/24 Javascript
Vue实现随机验证码功能
2020/12/29 Vue.js
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
vscode 配置 python3开发环境的方法
2019/09/19 Python
Python定时从Mysql提取数据存入Redis的实现
2020/05/03 Python
如何让python的运行速度得到提升
2020/07/08 Python
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
NEW LOOK官网:英国时装零售巨头之一,快时尚品牌
2017/01/11 全球购物
初中毕业生的自我评价
2014/03/03 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
机关党员进社区活动总结
2014/07/05 职场文书
处级干部考察材料
2014/12/24 职场文书
Go语言使用select{}阻塞main函数介绍
2021/04/25 Golang
详解Vue的列表渲染
2021/11/20 Vue.js