【JavaScript 10—应用总结】:连缀
一、总体概述
1.1,什么叫连缀
所谓连缀,最简单的理解就是一句话同时设置一个或多个节点两个或两个以上的操作。比如:
<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;"></pre><pre name="code" class="javascript">$().getTagName("p").css("color","green").html("标题").click(function(){
alert("a");
}).css("backgroundColor","pink");</span></span>
说明:在这里,我们设置了节点的CSS属性,HTML标题,还有它的点击事件,这就是一个连缀的实例。
1.2,连缀的好处
快速方便的设置节点的操作。
1.3,个人理解
一说到连缀,作为我个人,我想到了以前用过的with...end with语句。比如说,我们在设置一个label标签的多个属性时,就可以使用这个语句,然后就不用每次声明属性设置的对象。在我理解,JS中所实现的连缀,与其有着异曲同工之妙。如果不实现连缀,作为上面代码中的效果,应该怎么实现呢?大概是这样的:
<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">$().getTagName("p").css("color","green");
$().getTagName("P").html("标题");
$().getTagName("p").css("backgroundColor","pink");
$().getTagName("p").click(function(){
alert("a");
})</span></span>
虽然,都能实现想要的效果,但并不方便。就好像是别人问我们一个问题:她是一个什么样的人,用连缀的效果回答就是:她是一个又聪明、又漂亮、又富有的姑娘。如果不使用连缀的效果就是:她是一个聪明的姑娘;她是一个漂亮的姑娘;她是一个富有的姑娘。所以,由此可见,使用连缀,可以让我们更为快速、更为丰富的描述一个对象。
二、实现连缀
2.1,逻辑分析
首先作为获取到的节点是没有CSS方法,也没有单击事件的。那么要实现这些,我们需要将返回来的节点(每次返回的东西)作为一个基础对象,然后,在基础对象上添加我们需要的方法。
2.2,处理流程
首先,为了输入的快捷和便利,首先将基础对象Base设置为$符:
<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">var $=function(){
return new Base();
};</span></span>
然后,获取元素的节点(需要操作的节点,如body、div等):
<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">function Base(){
//创建一个数组,来保存获取的节点和节点数组
this.elements=[];
//获取ID节点
this.getId=function(id){
this.elements.push(document.getElementById(id));
return this;
};
//获取元素节点
this.getTagName=function(tag){
var tags=document.getElementsByTagName(tag);
for(var i=0;i<tags.length;i++){
this.elements.push(tags[i]);
};
return this;
};
}
</span></span>
说明:1,如果我们不创建一个数组来保存获取到的元素节点,那么我们就不能返回Base则个基础对象,从而添加方法实现连缀。而获取到的返回值是一个div对象。
2,在获取元素节点时,使用了循环,而不是像获取ID节点一样的处理。我们都知道ID作为唯一标识符是唯一的,但是元素节点就有很多,比如:
<p>段落</p>
<p>段落</p>
<p>段落</p>
作为p的元素节点就有三个,如果像ID节点一样的处理,那么我们将只能设置第一个p元素节点。
最后,添加基础对象方法,实现连缀:
<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">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;
}; Base.prototype.click=function(fn){
for(var i=0;i<this.elements.length;i++){
this.elements[i].onclick=fn;
};
return this;
};
</span></span>
注意:为了区分节点获取和实现连缀所添加的方法,将节点的获取和方法分开。这时需要在Base这个基础对象的原型上添加方法。
三、总结
实现连缀可以帮助我们节省很多的时间,刚开始的时候,觉得挺新的,偶然想到了with...end with语句,突然一下子就觉得亲切了很多很多。所以将知识联系起来,找到共鸣,就可以让自己轻松很多很多。
【JavaScript 10—应用总结】:连缀的更多相关文章
- JavaScript 10分钟入门
JavaScript 10分钟入门 随着公司内部技术分享(JS进阶)投票的失利,先译一篇不错的JS入门博文,方便不太了解JS的童鞋快速学习和掌握这门神奇的语言. 以下为译文,原文地址:http://w ...
- javascript 10进制和64进制的转换
原文:javascript 10进制和64进制的转换 function string10to64(number) { var chars = '0123456789abcdefghigklmnopqr ...
- 第一百三十节,JavaScript,封装库--连缀
JavaScript,封装库--连缀 学习要点: 1.连缀介绍 2.改写库对象 本章我们重点来介绍,在调用库的时候,我们需要能够在前台调用的时候可以同时设置多个操作,比如设置CSS,设置innerHT ...
- 从零开始学习前端JAVASCRIPT — 10、JavaScript基础ES6(ECMAScript6.0)
ECMAScript 6.0(简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发 ...
- Javascript:10天设计一门语言
演进和使用的JavaScript是早在1995年开发的一种语言,真的是刚刚起步. 网景公司在1995年四月聘请Brendan Eich ,他被告知,他有10天时间创造并制作了一种将在Netscape的 ...
- javascript库概念与连缀
一.JavaScript 库 1.什么是javascript库: javascript库,说白了,就是把各种常用的代码片段,组织起来放在一个 js 文件里,组成一个包,这个包就是 JavaScript ...
- Eloquent JavaScript #10# Modules
索引 Notes 背景问题 模块Modules 软件包Packages 简易模块 Evaluating data as code CommonJS modules ECMAScript modules ...
- javascript——10章 DOM
1.节点关系 (1)childNodes:返回节点的子节点集合 返回值:NodeList 对象,表示节点集合. 注:childNodes只能取到子级,不能取到子级的子级. childNodes所有节点 ...
- 深入理解JavaScript的闭包特性如何给循环中的对象添加事件
初学者经常碰到的,即获取HTML元素集合,循环给元素添加事件.在事件响应函数中(event handler)获取对应的索引.但每次获取的都是最后一次循环的索引.原因是初学者并未理解JavaScript ...
随机推荐
- XML文件的解析和序列化
序列化: private void createXml() { XmlSerializer serializer = Xml.newSerializer();// xml文件生成器 File file ...
- spark常用参数
val conf = new SparkConf().setAppName("WordCount_groupBy").setMaster("local") // ...
- OpenGL列主元矩阵和列主序存储
OpenGL矩阵要考虑两个点,一个是向量如何排布,一个是矩阵如何存储和恢复. 1.排布 排布决定了运算的顺序.OpenGL使用的是列主元,它的意思就是一个4X4的矩阵是由4个列向量构成(这里的v1,v ...
- chrom浏览器-F2使用方法一
由于F12是前端开发人员的利器,所以我自己也在不断摸索中,查看一些博客和资料后,自己总结了一下来帮助自己理解和记忆,也希望能帮到有需要的小伙伴,嘿嘿! 首先介绍Chrome开发者工具中,调试时使用最多 ...
- JAVA中IP和整数相互转化(含有掩码的计算)
import java.net.InetAddress;/** * 用于IP和整数之间的相互转换 * @author Andy.Wang * */public class IPv4Util { ...
- Java8新特性Lambda表达式
List<RoleDO> allRoles = roleService.list(); //获取角色中备注不是app的集合List<RoleDO> webRoles = all ...
- POI读word doc 03 文件的两种方法
Apache poi的hwpf模块是专门用来对word doc文件进行读写操作的.在hwpf里面我们使用HWPFDocument来表示一个word doc文档.在HWPFDocument里面有这么几个 ...
- JS添加验证页面中script标签中是否存在jquery文件
window.onload = function() { var al = document.getElementsByTagName("script"); var new_ele ...
- CF-1096C Polygon for the Angle
CF-1096C Polygon for the Angle https://codeforces.com/contest/1096/problem/C 题意:给一个角度ang(1<=ang&l ...
- 【思维题】AGC013C - Ants on a Circle
妙妙技巧题 题目描述 题目大意 一个圆环上有n只蚂蚁,它们会按照顺时针或者逆时针行走.如果有蚂蚁相遇它们就会掉头(不一定在整数时间掉转).问最后每只蚂蚁的位置. 题目分析 以前在luogu上做过一道类 ...