【JavaScript 10—应用总结】:连缀

2024-08-25 22:18
文章标签 java 总结 应用 script 连缀

本文主要是介绍【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—应用总结】:连缀的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106804

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,