标签函数 - 打造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组件吧!

        我们改日再会

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机基础知识——校验码概述

目录 1 码距 2 奇偶校验 3 CRC循环冗余校验码 3.1 多项式 3.2 编码的组成 3.3 生成多项式 3.4 校验码的生成 4 海明校验码和恒比码 4.1 校验方程 4.2 恒比码 1 码距 码距是恒量一种编码方式的抗错误能力的一个指标。数字信息在传输和存取的过程中,由于…

权威认可!甄知科技猪齿鱼产品荣获信创产品评估证书

近日,依据《信息技术应用创新产品评估规范 第1部分:应用软件》(T/SSIA 2001-2022),经过严格评估,甄知科技旗下自主研发的猪齿鱼数智化开发管理平台 V2.0.0,通过信创测试认证,获得上海…

Jmeter相关知识介绍

Jmeter 是Apache 组织开发的基于JAVA 的压力测试工具,用于对软件做压力测试,特别适合于WEB 应用测试(包括压力,接口测试) 今天简单介绍Jemeter的入门相关概念的理解 一、在安装目录下有一个Bin\Jmeter.bat 双击打开 打开之后是一个这样的界面 二、测试计划 1、添加和删…

基础语法(一)(1)

常量和表达式 在这里,我们可以把Python当成一个计算器,来进行一些算术运算 例如: print(1 2 - 3) print(1 2 * 3) print(1 2 / 3)注意: print是一个python内置的函数,这个稍后我们会进行介绍 可以使用-*/&…

java 音乐会售票平台系统Myeclipse开发mysql数据库struts2结构java编程计算机网页项目

一、源码特点 java 音乐会售票平台系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助struts2框架开发mvc模式,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发 环境为TOCAT7.0,Myeclipse8.5开发,数据…

揭开 JavaScript 作用域的神秘面纱(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

Halcon计算最小外接矩形Smallest_rectangle2

Halcon计算最小外接矩形Smallest_rectangle2 该算子用于求最小外接矩形。该算子的原型如下: smallest _rectangle2 (Regions : : : Row, Column, Phi, Lengthl, Length2)其各参数的含义如下。 参数1:Regions 表示输入的区域。 参数2和3:Row…

如何通过HACS+Cpolar实现远程控制米家和HomeKit等智能家居设备

文章目录 基本条件一、下载HACS源码二、添加HACS集成三、绑定米家设备 ​ 上文介绍了如何实现群晖Docker部署HomeAssistant,通过内网穿透在户外控制家庭中枢。本文将介绍如何安装HACS插件商店,将米家,果家设备接入 Home Assistant。 基本条件…

Spring AI和Ollama

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

python 模块搜索路径

前言 当我们import os的时候,Python解释器去哪找os模块呢?如果多处都有os模块,选择哪个os模块呢? 去哪找os模块? Python解释器不是很神奇,它会从以下2个地方找os模块 1、内置模块 sys.builtin_module_nam…

ROS-arbotix安装

方式一:命令行输入: sudo apt-get install ros-melodic-arbotix如果ROS为其他版本,可将melodic替换为对应版本。 方式二: 先从 github 下载源码,然后调用 catkin_make 编译 git clone https://github.com/vanadiumla…

P59 生成式对抗网络GAN-理论介绍 Theory behind GAN

Object Normal Distribution 的数据 经过 Generator 后生成分布更加复杂的PG. 真实数据的分布为 Pdata , 希望 PG和Pdata 越近越好 LOSS 是 两者之间的分布距离 问题: 如何计算 divergence? Sampling is goog enough Discriminator 希望V越大越好 y~Pdata 代表从 Pdata里…

项目整合积木报表-设计页面

项目整合积木报表-设计页面 <template><div><iframe id"dome" :srcsrc ></iframe></div> </template><script>export default {data(){return{src:configSrc.src"/jmreport/view/836138868821839872"}}} </…

BMTrain来高效训练预训练模型-大模型的福音

一.背景知识 在2018年&#xff0c;预训练语言模型技术的出现成为人工智能领域一场革命性的变革。研究表明&#xff0c;通过增加模型参数量和训练数据规模&#xff0c;可以有效提升语言模型的性能&#xff0c;因此十亿、百亿甚至千亿级大模型的探索成为业界的热门话题。这一趋势…

《网络是怎样连接的》2.3节图表(自用)

图4.1&#xff1a;TCP拆分数据与ACK号 图4.2&#xff1a;实际工作中ACK号与序号的交互过程 首先&#xff0c;客户端在连接时需要计算出与从客户端到服务器方向通信相关的序号初始值&#xff0c;并将这个值发送给服务器&#xff08;①&#xff09;。 接下来&#xff0c;服务器会…

macOS 老版本系统恢复中出现“MacBook Pro无法与恢复服务器取得联系”

macOS 老版本系统恢复中出现“MacBook Pro无法与恢复服务器取得联系” 网络问题系统时间问题镜像索引问题 网络问题 系统时间问题 镜像索引问题 恢复模式的 “实用工具 > 系统终端” 里执行如下 nvram IASUCatalogURLhttps://swscan.apple.com/content/catalogs/others/i…

PDF.js实现搜索多个不同的关键词高亮显示效果

static\PDF\web\viewer.js 392行左右 // 自定义搜索关键词---------------------------------------- this.searchKeywords = keyword => {if (typeof PDFViewerApplication !== undefined) {PDFViewerApplication.eventBus.dispatch(find, {query: keyword,caseSensitive:…

环境配置 | 史上最详细的Anaconda安装教程

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。Anaconda是Python的一个发行版&#xff0c;它是一个集成了Python开发工具的平台&#xff0c;也是数据科学的利器。安装Anaconda可以方便地获取Python及其相关工具和库&#xff0c;而无需单独安装Python。&#x1f308; 目…

程序媛的mac修炼手册-- 靠谱的数据源网站

啊&#xff0c;今天还是要给大伙儿安利些干货&#xff0c;方才对得起大伙儿的关注支持啊&#xff5e; 我最开始用Mac&#xff0c;主要是做数据分析的。包括R语言、Python语言&#xff0c;这些分析工具在Mac上运行地都很流畅。但我很少用Mac自带的电子表单应用程序Numbers&…

小程序如何配置扫码点餐功能

在餐饮行业中&#xff0c;通过小程序扫码点餐是一种非常方便和高效的方式。下面具体介绍怎么给小程序设置扫码点餐功能。 一、给每个桌子设置单独的小程序码。管理员点击个人中心->我的管理->更多->门店码。 生成小程序码页面&#xff0c;各个字段解释如下。 会员卡…