标签函数 - 打造JavaScript组件

📢 鸿蒙专栏:想学鸿蒙的,冲

📢 C语言专栏:想学C语言的,冲

📢 VUE专栏:想学VUE的,冲这里

📢 CSS专栏:想学CSS的,冲这里

📢 Krpano专栏:想学Krpano的,冲这里

 📢 JavaScript专栏:想学JavaScript的,冲这里

🔔 上述专栏,都在不定期持续更新中!!!!!!!

目录

✨ 前言

标签函数简介

标签函数的作用

实现JS组件

✨ 结语


✨ 前言

        标签函数是JavaScript ES5中添加的一个非常有用而且重要的特性,但很多同学可能还不太熟悉。本文将详细介绍标签函数的语法、功能与应用,你将学会如何利用它来封装JavaScript组件。

标签函数简介

        标签函数允许我们在一个函数前面加上一个标签,这样就可以通过标签进行调用了。基本语法如下:

label: 
function foo() {// ...
}

        定义完标签函数后,可以通过label()的方式进行调用。

        标签名可以任意取,唯一限制就是不能与语言中的关键字冲突。

标签函数的作用

        那标签函数有什么作用呢?主要体现在两个方面:

  1. 调用时可以省略函数名,更简洁
  2. 可以同时调用多个标签函数

  示例:

login:
function loginUser() {console.log('Login');
}logout:
function logoutUser() {console.log('Logout');
}login(); 
logout();

        标签函数让调用更简洁,多个标签函数可以并列调用。

实现原理

        标签函数的实现原理可以概括为:

  1. 标签函数实际上只是普通的函数,但是可以被当作对象属性来引用。
  2. 定义标签函数时,会将函数对象作为值赋值给对应标签的属性。
  3. 调用标签函数时,实际上是访问该标签对应的函数属性,然后调用函数。
  4. 标签函数允许同一个函数被多次引用,每个标签访问的都是同一个函数对象。

        具体实现过程:

  • 当定义标签函数时,会将函数对象作为值赋值给对应标签identifer的属性,这在JavaScript引擎内部实现。
  • 标签本质上是一个标识符,赋值给标签的函数相当于一个值。
  • 调用标签函数时,引擎会自动解析标签,访问标识符对应的函数属性,然后调用函数。
  • 多个标签可以引用同一个函数,所以可以并列调用。
  • 标签函数不影响函数本身,只是创建了一个访问函数的别名。

        所以标签函数的实质是利用了JavaScript的对象属性引用机制,让函数可以被引用和访问,实现起一个别名的作用。这种特性可以让我们更灵活地封装和调用函数。

实现JS组件

        标签函数最强大的用法就是可以用它来封装JavaScript组件。我们可以这么做:

  1. 使用标签函数定义组件
  2. 在组件内部封装数据和功能
  3. 通过标签调用组件API

        这样就实现了强大的封装和信息隐藏。示例:

user:
function() {let name = 'Jack';return {getName() {return name; }};}let user = user();
user.getName(); // 'Jack'

        这实现了user组件的封装。外部只需要通过user标签调用,组件内部的细节都被隐藏起来了。

        使用标签函数封装组件,可以让我们的代码更加优雅、封装性更好。值得我们深入学习使用。

✨ 结语

        标签函数是ES5添加的优秀特性,让JavaScript函数更加易用和面向对象。我们可以利用它来封装组件,隐藏内部实现细节。本文详细介绍了标签函数的语法和用法,希望对你有所启发。去使用标签函数,打造JS组件吧!

        我们改日再会

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/601778.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++返回值、返回引用、返回地址

函数内的对象的保留和处理: 1.当函数结束时,所有除了堆中的对象之外的函数成员,全部都会被处理掉,无法保留。 2.在返回过程中,无论是引用、指针、还是值,只要是跟在return后面的,都会以复制的方…

Flutter 混合开发 - aar打包

背景 项目接入 Flutter 后有两种方式,一种是 module 引入开发,一种是 aar 依赖开发。当前项目中在 Debug 阶段为了方便调试采用 module 开发,在发版时(即 Release 阶段)采用 aar 依赖引入。为了配合这种模式就需要在 …

高可用分布式部署Spark、完整详细部署教程

前言 Spark 是 UC Berkeley AMP Lab 开源的通用分布式并行计算框架。 Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS&#xff…

Spring AI和Ollama

概述 Spring AI 不仅提供了与 OpenAI 进行API交互,同样支持与 Ollama 进行API交互。Ollama 是一个发布在GitHub上的项目,专为运行、创建和分享大型语言模型而设计,可以轻松地在本地启动和运行大型语言模型。 Docker环境安装Ollama 1.获取D…

代码随想录:贪心算法

455. 分发饼干 解题步骤 排序:给两个数组排序举例判断:看第一个情况不满足,要换孩子还是换物品? a. 换孩子→遍历孩子 b. 换物品→遍历物品 实战: 选择从小到大排序第一个不满足,我要换物品。因为换了孩…

AIGC带给开发者的冲击

未来会有两种开发者,一种是会使用AIGC工具的开发者另一种是不会使用AIGC的开发者,AIGC的出现提高了开发效率和代码质量,对开发者意味着需要不断学习和适应新的技术和工作范式,开发者可以把更多的精力放在高级抽象的定义以及更高维…

【C程序设计】C enum(枚举)

枚举是 C 语言中的一种基本数据类型,用于定义一组具有离散值的常量,它可以让数据更简洁,更易读。 枚举类型通常用于为程序中的一组相关的常量取名字,以便于程序的可读性和维护性。 定义一个枚举类型,需要使用 enum 关…

JS的防抖和节流

目录 防抖 搜索框带来的问题 实现的思路 案例 封装防抖函数 节流 滚动条加载带来的问题 实现的思路 案例 封装节流函数 防抖 搜索框带来的问题 需求&#xff1a;根据输入框内容来请求数据 <!DOCTYPE html> <html lang"en"> <head><…

STHS34PF80人体存在传感器(1)----获取人体存在状态

STHS34PF80人体存在传感器.1--获取人体存在状态 概述视频教学样品申请完整代码下载主要特点硬件准备接口最小系统图生成STM32CUBEMX串口配置IIC配置CS设置串口重定向参考案例获取ID温度测量滤波方式智能识别算法使用块数据更新&#xff08;BDU&#xff09;功能设置ODR速率获取状…

Stable Diffusion架构的3D分子生成模型 GeoLDM - 测评与代码解析

之前&#xff0c;向大家介绍过3D分子生成模型 GeoLDM。 GeoLDM按照Stable Diffusion架构&#xff0c;将3D分子生成的扩散过程运行在隐空间内&#xff0c;优化了基于扩散模型的分子生成。可能是打开Drug-AIGC的关键之作。让精确控制分子生成有了希望。 详见&#xff1a;分子生成…

Python 中的==操作符 和 is关键字

Python是一种功能强大的通用编程语言&#xff0c;提供了各种比较值和对象的方法。其中包括操作符和is关键字&#xff0c;它们的用途不同&#xff0c;但由于它们有时可以达到相同的目的&#xff0c;所以经常会被混淆。在本文中&#xff0c;我们将深入研究和is之间的区别&#xf…

C++入门基本语法

目录 前言 一.命名空间 1.命名空间定义 2.命名空间的使用 3.展开命名空间 二.缺省函数 三.函数重载 四.引用 1.特性 2.使用场景 3.效率及实现 前言 欢迎来到C的世界&#xff01;C是一种广泛使用的计算机编程语言&#xff0c;它提供了丰富的功能&#xff0c;包括面向…

海外分支访问国内服务器系统慢怎么办?

在全球业务不断扩张的今天&#xff0c;企业面临着海外分支访问国内总部服务器系统慢的问题。为了解决这一挑战&#xff0c;我们引入了lxway全球系统专网产品&#xff0c;为企业提供高效、安全的全球网络连接方案。通过解析技术瓶颈和专网的优势&#xff0c;本文将揭示如何借助先…

设计模式之过滤器模式

目录 1.简介 2.过滤器的实现 2.1.过滤器的角色 2.2.类图 2.3.具体实现 3.过滤器模式的优点 4.过滤器模式的不足 5.适用的场景 1.简介 过滤器模式&#xff08;Filter Pattern&#xff09;或标准模式&#xff08;Criteria Pattern&#xff09;是一种结构型设计模式&…

【Python学习】Python学习3-变量类型

目录 【Python学习】Python学习3 前言变量赋值多个变量赋值标准数据类型Python Numbers(数字)Python List&#xff08;列表&#xff09;Python Tuple&#xff08;元组&#xff09;Python Dictionary&#xff08;字典&#xff09; Python数据类型转换总结参考 文章所属专区 Py…

【数据库原理】(9)SQL简介

一.SQL 的发展历史 起源&#xff1a;SQL 起源于 1970 年代&#xff0c;由 IBM 的研究员 Edgar F. Codd 提出的关系模型概念演化而来。初期&#xff1a;Boyce 和 Chamberlin 在 IBM 开发了 SQUARE 语言的原型&#xff0c;后发展成为 SQL。这是为了更好地利用和管理关系数据库。…

基于albert的汽车评论情感分析【含代码】

汽车评论情感分析 汽车评论情感数据集代码加载库与参数设置数据集的读取超参数设置与数据集的构建模型的训练与验证 汽车评论情感数据集 链接&#xff1a;https://pan.baidu.com/s/1K5TWrXbXBRXkCUpMbZq2XA 提取码&#xff1a;9mt9 代码 加载库与参数设置 首先先把一些基础…

C#使用条件语句判断用户登录身份

目录 一、示例 二、生成 利用条件语句判断用户登录身份&#xff0c;根据用户登录身份的不同&#xff0c;给予相应的操作权限。 一、示例 主要用if语句及ComboBox控件。其中&#xff0c;ComboBox是窗体中的下拉列表控件&#xff0c;在使用ComboBox控件前&#xff0c;可以先向…

YoloV7改进策略:基于频域多轴表示学习模块|全网首发|高效涨点|代码注释详解

摘要 涨点效果: 本文尝试使用频域多轴表示学习模块改进YoloV7,尝试了三种改进方式,均有不同的涨点。 论文:《医学图像分割中的频域多轴表示学习》 https://arxiv.org/pdf/2312.17030v1.pdf 最近,视觉Transformer (ViT)在医学图像分割(MIS)中得到了广泛应用,这归功于…

springboot实现ChatGPT式调用(一次调用,持续返回)

下边实现了一个持续返回100以内随机数的接口&#xff0c;在接口超时之前会每隔1秒返回一个随机数 GetMapping(value "/getRandomNum", produces MediaType.TEXT_EVENT_STREAM_VALUE) public SseEmitter getRandomNum() {SseEmitter emitter new SseEmitter();Th…