封装库-连缀

在调用库的时候,我们需要能够在前台调用的时候可以同时设置多个操作,比如设置 CSS,设置innerHTML,设置 click事件等等。

一. 连缀介绍

所谓连缀,最简单的理解就是一句话同时设置一个或多个节点两个或两个以上的操作 。
比如:

$().getId('box').css('color', 'red').html('标题').click(function () {alert('a')});

连缀的好处,就是快速方便的设置节点的操作。

二. 改写库对象

如果是实现操作连缀,那么我们就需要改写对象写法:var Base = {},这种写法无法在它的原型中添加方法,所以需要使用函数式对象写法:

function Base() {//把返回的节点对象保存到一个 Base对象的属性数组里this.elements = [];//获取 id 节点this.getId= function (id) {this.elements.push(document.getElementById(id));return this;};//获取 name 节点数组this.getName = function (name) {var names =document.getElementsByName(name);for (var i = 0; i < names.length; i ++) {this.elements.push(targs[i]);}return this;}//获取元素节点数组this.getTagName = function(tag) {var tags = document.getElementsByTagName(tag);for (var i = 0; i < tags.length; i ++) {this.elements.push(tags);}return this;};
}

PS:这种写法麻烦的地方是,需要在前台 new 出来,然后调用。但采用这种方式 ,我们可以在每个方法里在每个方法里都返回这个对象,并且还可以在对象的原型里添加方法,这些都是连缀操作最基本的要求。

Base.prototype.click = function(fn) {for (var i = 0; i < this.elements.length; i ++) { this.elements[i].onclick = fn; }return this;
};Base.prototype.css = function (attr, value) {for (var i = 0; i < this.elements.length; i ++) { this.elements[i].style[attr]= value; }return this;
}Base.prototype.html = function (str) {for (var i = 0; i < this.elements.length; i ++) { this.elements[i].innerHTML = str; }return this;
}

PS:为了避免在前台 new 一个对象,我们可以在库里面直接 new。

var $ = function () {return new Base();
};

转载于:https://my.oschina.net/jason26/blog/1623880

[js项目]封装库-连缀相关推荐

  1. 第一百三十节,JavaScript,封装库--连缀

    JavaScript,封装库--连缀 学习要点: 1.连缀介绍 2.改写库对象 本章我们重点来介绍,在调用库的时候,我们需要能够在前台调用的时候可以同时设置多个操作,比如设置CSS,设置innerHT ...

  2. 项目封装库系列之“三”工具类【网络拦截器】

    引言:记录自己项目中使用的库,非技术文章. okhttp请求的日志拦截器.基于okhttp3版本: 上代码: public class HttpLoggingInterceptor implement ...

  3. Moment.js 一款JS时间封装库

    链接地址:http://momentjs.cn/docs/#/displaying/difference/ 转载于:https://www.cnblogs.com/lpt1229/p/6023512. ...

  4. 只有 2 行代码的库,坑了数百万 JS 项目

    综合整理:技术最前线(ID:TopITNews) 参考:solidot.ZDNet 上周末,一个 npm 小项目的更新给整个 npm 生态系统制造了一场混乱,影响到了数百万 JS 项目.这个库就是 i ...

  5. 第一百三十一节,JavaScript,封装库--CSS

    JavaScript,封装库--CSS 将封装库里的方法,改成了原型添加方法 增加4个方法 tian_jia_class()方法,给获取到的元素添加class属性,参数是class属性值,可以连缀1 ...

  6. 第10章-Vue.js 项目实战

    一.本节内容 掌握项目环境中路由的配置方法 ***** 熟练掌握编写单文件组件的编写 *** 能够使用swiper.js进行轮播图组件的封装 能够使用axios进行数据请求 二.webpack项目的目 ...

  7. iOS、mac开源项目及库(转载)

    目录 UI 下拉刷新 模糊效果 AutoLayout 富文本 图表 表相关 隐藏与显示 HUD与Toast 对话框 其他UI 动画 侧滑与右滑返回手势 其他动画 网络相关 网络连接 网络测试 图像获取 ...

  8. Android开源项目及库整理总结

    自己总结的Android开源项目及库. github排名https://github.com/trending, github搜索:https://github.com/search UI Aweso ...

  9. THREE.JS 与其他库的对比

    随着 WebGL 的迅速发展,相关的 WebGL 库也丰富起来,接下来介绍几个比较火的 WebGL 库. 与 BABYLON.JS 对比 Babylon.JS 是最好的 JavaScript 3D 游 ...

最新文章

  1. IDEA中引用不到HttpServlet的解决方案
  2. linux c 随机函数 rand srand 介绍
  3. C++著名程序库的比较和学习经验
  4. Strut2的属性驱动,模型驱动的理解
  5. scipy.interpolate: 插值和平滑处理
  6. 前端学习(591):source面板介绍
  7. PLSQL 日期格式修改
  8. 详解:设计模式之-适配器模式
  9. mysql5.7查询多层json写法
  10. d3d9 抓取windows屏幕
  11. Beta阶段第1周/共2周 Scrum立会报告+燃尽图 03
  12. Android 健康饮食软件详解
  13. HyperMesh入门笔记
  14. 修改thinkpad 小红点(TrackPoint速度)
  15. 两个技巧教你怎么裁剪视频尺寸,手残党也能掌握
  16. 【中秋系列】马上中秋了,给老板写了个猜灯谜小脚本,猜到的越多奖金就越高?赚翻了~
  17. Python中的sin和cos函数
  18. html打开网页过场动画_网页制作设计基础知识
  19. Oracle那些年那些事儿
  20. JPA手写动态sql

热门文章

  1. adb shell dumpsys appops
  2. WPF实战之DataGrid设置行高
  3. 【浏览器兼容性】如何隐藏微软的ie和edge浏览器密码输入框的小眼睛
  4. 打印机无线连接台式机、笔记本找不到目标打印机解决方案
  5. 电脑win10系统如何开定位服务器,Win10系统定位功能如何打开 Win10系统定位打开方法...
  6. 【Python 打开Raw data】
  7. 计算机视觉基础知识复习
  8. 如何优雅的管理以及书写好代码
  9. Whitelabel Error Page(一)
  10. latex小技巧—极限符号下方分成两行