位置: 编程技术 - 正文

jQuery 3.0 的 setter和getter 模式详解

编辑:rootadmin

推荐整理分享jQuery 3.0 的 setter和getter 模式详解,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

jQuery 的 setter/getter 共用一个函数,通过是否传参来表明它是何种意义。简单说传参它是 setter,不传它是 getter。

一个函数具有多种意义在编程语言中并不罕见,比如函数重载:一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。重载的好处是减少了函数名的数量,避免了名字空间的污染,对于程序的可读性也大有裨益。

函数重载主要体现的两个方面,一是参数的类型、相同个数的参数类型不同可称为函数重载;二是参数的个数,个数不同也称为函数重载。注意,重载与函数的返回值并无关系。

由于 JS 弱类型的特征,想模拟函数重载就只能通过第二种方式:参数的个数来实现。因此函数内的 arguments 对象就显得非常重要。

以下是一个示例

doAdd 通过判断函数的参数个数重载实现了三种意义,argsLength 为 0 时,直接返回 0; argsLength 为 1 时,该参数与 相加;argsLength 为 2 时两个参数相加。

利用函数重载特性可以实现 setter/getter

以上简单的解释了函数重载及利用它实现 setter/getter。即"取值器"与"赋值器"合一。到底是取值还是赋值,由函数的参数决定。jQuery 的很多 API 设计大量使用了这种模式。

下图汇总了 jQuery 中采用这种模式的所有 API,共 个函数

所有这些函数内部都依赖另一个函数 access, 毫不夸张的说 access 是所有这些函数的核心,是实现 setter/getter 的核心。下面是这个函数的源码,它是一个私有的函数,外部是调用不到它的。

access 的源码如下

该函数的注释提到:这是一个多功能的函数,用来获取和设置一个集合元素的属性和值。value 可以是一个可执行的函数。这个函数一共不到 行代码。从上往下读,第一个 if 是设置多个 value 值,是一个递归调用。刨去这个递归调用,设置单个值的代码也就不到 行了。写的非常简练、耐读。

为了理解 access 函数,我画了两个图

access 内部两个主要分支

jQuery 3.0 的 setter和getter 模式详解

access 内部的执行流程

access 定义的形参有 7 个

1.elems 元素集合,实际调用时传的都是 this,这里的 this 是 jQuery 对象,我们知道 jQuery 对象本身是一个集合,具有 length 属性和索引。必传。

2.fn 实现 setter/getter 的函数,就是说这个函数里需要有条件能判断哪部分是 setter,哪部分是 getter。必传。

3.key 比如 attr 和 prop 方法要传,设置或获取哪个 key 的值。有的则不用传,但为了占位用以 null 替代,比如 text、html 方法。可选。

4.value 仅当 setter 时要传,即 value 为 undefined 时是 getter,否则是 setter。可选。

5.chainable 当为 true 时,进入 setter 模式,会返回 jQuery 对象。false 则进入 getter模式。调用时通过 arguments.length 或 arguments.length>1 传入。

6.emptyGet 当 jQuery 对象为空时,返回的结果,默认不传为 undefined,data 方法调用时传的是 null。

7.raw 当 value 为函数类型时 raw 为 false,否则为 true。

上面提到了 access 是 jQuery 所有 setter/getter 函数的核心,换句话说所有 个函数 setter/getter 函数内部都会调用 access。这也是为什么 access 有 7 个参数,里面分支众多。因为它要处理的各种条件就很多呢。但所有这些 setter/getter 有很多类同的代码,最后还是提取一个公共函数。

为了便于理解,我把 access 的调用分类以下,便于我们理解。

1. 调用 access 时,第三个参数 key 传值为 null,分别是 text/html 方法

图示这两个方法在 access 内部执行处

为什么 key 传 null,因为 DOM API 已经提供了。text 方法使用 el.innerText 设置或获取;html 方法使用 innerHTML 设置或获取(这里简单说,实际还有一些异常处理)。

2. 与第一种情况相反,调用 access 时 key 值传了且不为 null。除了 text/html 外的其它 setter 都是如此

图示这些方法在 access 内部执行处

jQuery实现table中的tr上下移动并保持序号不变的实例代码 jQueryMoveTr.html代码如下:!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"HTMLHEADTITLEjQuery-bhang/TITLEscripttype="text/javascript"src="jquery-1.6.2.js"/scriptscripttype="text/javascript

基于BootStrap环境写jQuery tabs插件 一直想改版网站首页的图书展示部分,以前的展示是使用BootStrap的传统的collapse,网页篇幅占用大,也不够美观,操作也来说比较麻烦。于是有了自己利

多功能jQuery树插件zTree实现权限列表简单实例 zTree是一个依靠jQuery实现的多功能树插件。优异的性能、灵活的配置、多种功能的组合是zTree最大优点。zTree官网zTreeAPI下载链接页面主要引入一下几个文

标签: jQuery 3.0 的 setter和getter 模式详解

本文链接地址:https://www.jiuchutong.com/biancheng/385025.html 转载请保留说明!

上一篇:jquery实现跳到底部,回到顶部效果的简单实例(类似锚)(jquery跳出方法)

下一篇:jQuery实现table中的tr上下移动并保持序号不变的实例代码

  • 汇算清缴研发费用加计扣除优惠明细表
  • 不得公开发行股票的情形
  • 外资研发中心认定标准
  • 公司全部股权转让流程
  • 应付账款赊销率和周转率的区别
  • 电子银行承兑汇票查询
  • 个体户城市维护建设税减免性质
  • 建筑施工企业存货是未结转的成本对吗
  • 一般纳税人的登记管理表述不正确的是
  • 企业所得税前扣除是什么意思
  • 无形资产报废会计科目
  • 每月末计提利息分录
  • 应付职工薪酬的计税基础
  • 融资担保公司会计建议有哪些要求
  • 公司注销时长期投资怎么处理
  • 库存盘亏的原因
  • 投资性房地产计量模式的转换
  • 应收账款零头没有收到如何账务处理
  • 公司注销固定资产怎么处理税怎么交
  • 个体工商户开票金额超过核定了咋办
  • 企业自行建造的固定资产
  • 政策性搬迁税收政策指引
  • 技术服务费收入属于提供劳务收入吗
  • 多计提的费用怎么调整
  • 收购股权公司
  • 任务栏图标重叠一起
  • 企业支付工商年费怎么查
  • 跨年度增值税发票作废怎么退税
  • 房产税和城镇土地使用税
  • VMware虚拟机中怎么复制粘贴
  • 怎么用U盘装系统win7
  • 非货币性资产对外投资会计处理
  • qqlogin.exe是什么进程 qqlogin.exe应用程序错误解决办法
  • 涉税专业服务机构是什么
  • acer笔记本如何关闭键盘数字键
  • 手机忘记密码怎么解开锁华为
  • 大堡礁分布在澳大利亚的哪里
  • 广告费可以结转几年扣除
  • 小规模纳税人房产税优惠政策2023
  • pgrep命令详解
  • 公对公的税票是怎么个流程
  • 展会门票怎么入账
  • 公司纳税信用等级B级是什么意思
  • 库存商品和固定资产是单位会计资产核算的两项内容
  • 印花税如何缴纳 计税依据是什么
  • 欠款收不回来了会计分录
  • 企业增资会计科目
  • 小公司财务做内账流程
  • 融资租赁业务如何高效拓展
  • 捐赠支出税前扣除比例
  • 资产已报废折旧怎么算
  • 非成品油发票能做进项吗
  • 本月多交的增值税
  • 资产减值损失可以计入营业外支出吗
  • 自我挖掘的才干
  • CentOS6 32/64位安装Adobe Flash Player组件的方法
  • virtualbox安装win7详细教程
  • centos如何删除bond
  • 如何打开mac系统终端
  • centos 安装方法
  • SetPoint.exe - SetPoint是什么进程 有什么用
  • win7系统如何关闭开机自动启动软件
  • win8怎么快速开机
  • 请问菜单
  • nodejs rbac
  • Cocos2dx3.2 Crazy Tetris 游戏输入(键盘事件,重力事件,触摸屏事件)
  • js中颜色对应代码
  • nodejs 爬虫
  • jQuery使用contains过滤器实现精确匹配方法详解
  • 英语流利说的简单介绍
  • python 中文转码
  • 重庆税务局官网发票查询
  • 税务局发票邮寄需要多久
  • 组织生活会有民族评议党员大会会后报告
  • 中国地税发展现状
  • 强化管理定义
  • 科技公司小规模纳税人与一般纳税人区别
  • 疫情期间增值税税率
  • 江苏盐在什么地方
  • 缴纳耕地占用税的好处
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设