vue3 修饰符大全(近万字长文)

news2024/9/21 8:03:22

在这里插入图片描述

系列文章目录

TypeScript 从入门到进阶专栏


文章目录

  • 系列文章目录
  • 前言
  • 一、事件修饰符(Event Modifiers)
    • 1、.stop(阻止事件冒泡)
    • 2、.prevent(阻止事件的默认行为)
    • 3、.capture(使用事件捕获模式)
    • 4、.self(只当事件在该元素本身(而不是子元素)触发时触发回调函数)
    • 5、.once(只触发一次回调函数)
  • 二、按键修饰符(Key Modifiers
    • 1、.enter(按下回车键时触发)
    • 2、.tab(按下tab键时触发)
    • 3、.delete(按下删除或退格键时触发)
    • 4、.esc(按下ESC键时触发)
    • 5、.space(按下空格键时触发)
    • 6、.up(按下上箭头键时触发)
    • 7、.down(按下下箭头键时触发)
    • 8、.left(按下左箭头键时触发)
    • 9、.right(按下右箭头键时触发)
  • 表单输入修饰符(Form Input Modifiers)
    • 1、.lazy(用于将输入事件延迟到change事件之后触发)
    • 2、.number(自动将输入值转为数字类型)
    • 3、.trim(自动去除输入值两端的空白字符)
  • 鼠标修饰符(Mouse Modifiers)
    • 1、.left(只在鼠标左键点击时触发)
    • 2、.right(只在鼠标右键点击时触发)
    • 3、.middle(只在鼠标中键点击时触发)
    • 3、.passive(指定事件监听器为被动模式,可以提升滚动性能)


前言

本文是为了系统性的了解vue3中的修饰符,方便开发时的使用,使用修饰符可以方便地对事件进行控制和处理,提升用户体验。


一、事件修饰符(Event Modifiers)

1、.stop(阻止事件冒泡)

修饰符.stop是用于阻止事件冒泡的。当一个具有.stop修饰符的事件监听器被触发时,该事件将不再向上冒泡到父元素。这意味着如果一个父元素和子元素都有相同类型的事件监听器,并且点击了子元素,那么只会触发子元素的事件监听器,父元素的事件监听器将被忽略。

例如,以下代码中的点击事件只会触发handleClick方法,而不会触发父元素的事件监听器。

<template>
  <div @click="handleClick">
    <button @click.stop="handleClick">Click me</button>
  </div>
</template>

<script>
export default {
  methods: {
    handleClick() {
      console.log('Button clicked');
    },
  },
};
</script>

2、.prevent(阻止事件的默认行为)

.prevent是一个修饰符,用于事件处理函数中,阻止事件的默认行为。当事件触发时,浏览器会执行默认的操作,例如提交表单、打开链接等。而使用.prevent修饰符可以阻止这些默认的行为。

使用.prevent修饰符的方式是在事件处理函数的名称后面加上.prevent,例如:

<button @click.prevent="submitForm">提交表单</button>

在上述的代码中,当按钮被点击时,submitForm函数会被调用,同时会阻止表单的默认提交行为。

3、.capture(使用事件捕获模式)

.capture 是一个事件修饰符,用于监听一个元素的捕获阶段事件。

事件捕获是浏览器在事件传播过程中的第一个阶段,它从顶层元素向下传播到目标元素。而事件冒泡是事件传播的第二个阶段,它从目标元素向上冒泡到顶层元素。

使用.capture修饰符可以让一个元素在事件捕获阶段监听某个事件,而不是在事件冒泡阶段。

例如,我们有一个父组件和一个子组件,父组件上有一个div元素和一个子组件的插槽:

<template>
  <div @click.capture="handleClick">
    <slot></slot>
  </div>
</template>

在父组件中,我们使用了.capture修饰符来监听div元素的点击事件。这意味着当我们在子组件中点击父组件的插槽时,事件会在父组件的div元素上触发,先触发父组件的事件处理函数,然后再触发子组件的事件处理函数。

<template>
  <parent-component>
    <child-component @click="handleChildClick"></child-component>
  </parent-component>
</template>

在子组件中,我们也有一个点击事件处理函数handleChildClick,它会在子组件的div元素上触发。但是因为我们使用了.capture修饰符,所以父组件的点击事件处理函数handleClick会在子组件的事件处理函数之前触发。

.capture修饰符在某些特定的场景下非常有用,可以帮助我们更好地控制事件的触发顺序和处理逻辑。

4、.self(只当事件在该元素本身(而不是子元素)触发时触发回调函数)

修饰符 .self用于限制事件只能在触发事件的元素本身上触发,而不是在子元素上触发。这意味着只有当事件直接在绑定事件的元素上触发时,才会执行事件处理函数。

例如,我们有一个父元素和一个子元素,父元素绑定了一个点击事件,子元素是父元素的一个子元素。使用 .self 修饰符可以确保点击子元素时不会触发父元素的点击事件,只有当点击父元素本身时才会触发。

<template>
  <div @click.self="handleClick">
    <div>
      Click Me
    </div>
  </div>
</template>

<script>
export default {
  methods: {
    handleClick() {
      console.log("Clicked on the element itself");
    }
  }
}
</script>

在上面的代码中,只有当点击 “Click Me” 文本所在的 div 元素时,才会触发 handleClick 方法并打印出信息。如果点击子元素 div,则不会触发点击事件。

5、.once(只触发一次回调函数)

修饰符.once用于绑定一个只能触发一次的事件监听器。

例如:

<template>
  <button @click.once="onClick">Click me</button>
</template>

<script>
export default {
  methods: {
    onClick() {
      console.log('Button clicked');
    }
  }
}
</script>

在上面的例子中,当按钮被点击时,onClick方法只会执行一次,之后再点击按钮将不再触发该方法。这就是.once修饰符的作用。

二、按键修饰符(Key Modifiers

1、.enter(按下回车键时触发)

.enter 是指在事件处理中,只有在按下回车键时才触发事件。

使用 .enter 修饰符可以方便地处理键盘事件,当用户在输入框中按下回车键时,可以触发特定的操作。

例如,在一个表单中,用户在输入框中输入完内容后按下回车键,可以提交表单数据。

使用 .enter 修饰符的语法如下:

<input v-on:keyup.enter="submitForm">

上述代码中,v-on:keyup.enter 表示当用户在输入框中按下回车键时,会触发 submitForm 方法。

除了可以在 v-on 指令中使用 .enter 修饰符外,还可以在 v-model 指令中使用,例如:

<input v-model.lazy.enter="message">

上述代码中,v-model.lazy.enter 表示当用户在输入框中输入内容并按下回车键时,会将输入的内容绑定到 message 变量中。

2、.tab(按下tab键时触发)

使用 .tab 修饰符可以让 Vue 组件在用户按下 Tab键时触发相应的事件处理函数。这在处理键盘导航或者表单中的焦点切换时非常有用。

以下是一个示例,演示了如何使用 .tab 修饰符监听 Tab 键事件:

<template>
  <div>
    <input ref="input1" v-on:keydown.tab="onTab">
    <input ref="input2" v-on:keydown.tab="onTab">
  </div>
</template>

<script>
export default {
  methods: {
    onTab(event) {
      if (event.target === this.$refs.input1) {
        // 当按下 Tab 键时,焦点从 input1 切换到 input2
        this.$refs.input2.focus();
      } else if (event.target === this.$refs.input2) {
        // 当按下 Tab 键时,焦点从 input2 切换到 input1
        this.$refs.input1.focus();
      }
    }
  }
}
</script>

在上述示例中,我们给两个 input 元素绑定了相同的 v-on:keydown.tab 指令,并在事件处理函数中根据当前的焦点位置切换焦点到另一个 input 元素上。当用户按下 Tab 键时,Vue 会自动调用对应的事件处理函数。

通过使用 .tab 修饰符,我们可以更方便地处理键盘导航和焦点切换,从而提升用户体验。

3、.delete(按下删除或退格键时触发)

.delete修饰符监听删除或退格键的按下事件。.delete修饰符是针对键盘事件的修饰符之一。

下面是一个示例,演示了如何在Vue 3中使用.delete修饰符来触发事件:

<template>
  <div @keydown.delete="deleteItem">Delete an item</div>
</template>

<script>
export default {
  methods: {
    deleteItem() {
      // 在这里执行删除逻辑
      console.log('Delete key pressed');
    }
  }
}
</script>

在这个示例中,我们在<div>元素上使用了@keydown.delete事件监听器,它会在按下删除或退格键时触发deleteItem方法。在deleteItem方法中,你可以执行你想要的删除操作。

请注意,.delete修饰符适用于Vue 3中的其他键盘事件修饰符,例如.enter.tab等。

4、.esc(按下ESC键时触发)

.esc按键修饰符来监听Esc键的按下事件。

例如,在模板中,可以将@keydown.esc绑定到一个方法上,当用户按下Esc键时,该方法会被调用。

<template>
  <div>
    <input type="text" @keydown.esc="handleEscKey" />
  </div>
</template>

<script>
export default {
  methods: {
    handleEscKey() {
      // 处理Esc键按下事件的逻辑
    }
  }
}
</script>

在上面的例子中,当用户在<input>输入框中按下Esc键时,会调用handleEscKey方法来处理按键事件。你可以在该方法中添加你想执行的逻辑。

5、.space(按下空格键时触发)

.space是一个按键修饰符,用于检测空格键的按下事件。可以用于监听按钮的按下事件,并在特定场景下执行相应的操作。

以下是使用.space按键修饰符的示例:

<template>
  <div>
    <button @keydown.space="handleSpace">按下空格键</button>
  </div>
</template>

<script>
export default {
  methods: {
    handleSpace() {
      console.log('空格键被按下了');
    }
  }
}
</script>

在上面的示例中,当用户按下空格键时,handleSpace方法会被调用,并在控制台中打印出"空格键被按下了"的消息。

请注意,.space只能检测到按下空格键的事件,如果需要检测空格键的释放事件,可以使用.space.up

6、.up(按下上箭头键时触发)

使用.up按键修饰符来捕获上方向键的按下事件。这可以用于处理上方向键的按下事件,例如在下拉菜单中选择上一个选项。

你可以在Vue模板中的事件处理器中使用.up按键修饰符,如下所示:

<template>
  <div @keydown.up="handleUpArrow"></div>
</template>

在上面的例子中,handleUpArrow函数将在按下上方向键时触发。

7、.down(按下下箭头键时触发)

.down修饰符用于指定在按下键时触发事件的条件。

例如,将按键修饰符.down应用于v-on指令,表示只有在同时按下键盘上的Down箭头键时才触发事件。

<template>
  <div>
    <input type="text" v-on:keydown.down="handleKeyDown" />
  </div>
</template>

<script>
export default {
  methods: {
    handleKeyDown(event) {
      console.log("Down Arrow Key Pressed");
    },
  },
};
</script>

在上述示例中,当按下键盘上的Down箭头键时,handleKeyDown方法将被调用,并在控制台中打印"Down Arrow Key Pressed"。

8、.left(按下左箭头键时触发)

按键修饰符可以用于监听特定的键盘事件。左箭头键的修饰符是.left

使用方式如下:

<template>
  <div @keydown.left="handleLeftKey"></div>
</template>

<script>
export default {
  methods: {
    handleLeftKey(event) {
      // 处理左箭头键的逻辑
    }
  }
}
</script>

在上面的示例中,我们在<div>元素上使用了@keydown.left事件监听器,当用户按下左箭头键时,会触发handleLeftKey方法。你可以在handleLeftKey方法中编写适当的逻辑来处理左箭头键事件。

9、.right(按下右箭头键时触发)

按键修饰符用于监听按键事件并进行相应的操作。使用 .right 按键修饰符可以监听右箭头键的按下事件。

以下是一个示例:

<template>
  <div @keydown.right="handleKeyDown">
    Press the right arrow key
  </div>
</template>

<script>
export default {
  methods: {
    handleKeyDown(event) {
      if (event.code === 'ArrowRight') {
        // 在这里执行相应的操作
      }
    }
  }
}
</script>

在上面的示例中,当右箭头键被按下时,handleKeyDown 方法会被调用,并且只有当按下的键是右箭头键时,才会执行相应的操作。

表单输入修饰符(Form Input Modifiers)

1、.lazy(用于将输入事件延迟到change事件之后触发)

表单输入修饰符.lazy用于将输入事件延迟到change事件之后触发,而不是在每次输入时触发。这可以减少不必要的输入事件触发次数,提升性能。

使用.lazy修饰符的示例:

<input v-model.lazy="message" />

在上述示例中,v-model.lazy绑定了message数据,并且在每次输入时不会立即更新message的值,而是在change事件触发时更新。这意味着用户需要离开输入框或者按下回车键才会触发数据的更新。

.lazy修饰符适用于一些场景,例如在输入框内容较多或者输入频率较高时,可以减少不必要的输入事件触发,提高性能。但是需要注意的是,由于输入事件延迟触发,可能会导致输入框的值与数据绑定的值存在一定的延迟。

在Vue 2中使用.lazy修饰符时,是通过v-model.lazy来实现的,而在Vue 3中,v-model已经内置了.lazy修饰符,所以只需要使用v-model即可。

2、.number(自动将输入值转为数字类型)

.number修饰符来将表单输入的值转换为数字类型。

使用.number修饰符的方式如下所示:

<input v-model.number="myNumber" type="text">

在上述示例中,通过v-model.number指令绑定一个数据属性myNumber来实现双向绑定。当用户在输入框中输入一个字符串时,Vue会自动将其转换为数字类型,并将结果保存在myNumber属性中。

需要注意的是,如果用户输入的值无法转换为数字类型,Vue会将其视为无效的输入。

3、.trim(自动去除输入值两端的空白字符)

.trim修饰符来去除表单输入框中的前导和尾随空格。这个修饰符可以与v-model指令一起使用,以确保用户输入的值不包含空格。

例如,假设我们有一个输入框,我们需要去除前导和尾随空格。我们可以通过在v-model后面加上.trim修饰符来实现:

<template>
  <input v-model.trim="text" type="text" placeholder="请输入文本" />
</template>

<script>
export default {
  data() {
    return {
      text: '',
    };
  },
};
</script>

现在,无论用户在输入框中输入的值是否包含空格,text的值都将自动去除前导和尾随空格。

请注意,.trim修饰符只能应用于v-model指令,它不适用于其他指令或绑定。

鼠标修饰符(Mouse Modifiers)

1、.left(只在鼠标左键点击时触发)

.left是一个鼠标修饰符,用于监听鼠标左键的点击事件。

例如,以下代码中的@click.left会在鼠标左键点击时触发事件处理函数:

<template>
  <button @click.left="handleClick">点击我</button>
</template>

<script>
export default {
  methods: {
    handleClick() {
      console.log('鼠标左键点击');
    }
  }
}
</script>

当用户点击按钮时,会在控制台输出"鼠标左键点击"。这是因为.left修饰符限定了只有在鼠标左键点击时才触发事件处理函数。

2、.right(只在鼠标右键点击时触发)

在Vue 3中,你可以使用.right鼠标修饰符来指定只有右键点击事件才会触发相应的事件处理程序。这个修饰符可以用于v-on指令中。

例如,你可以这样使用它:

<button v-on:click.right="handleRightClick">右键点击</button>

在上面的示例中,只有右键点击按钮时,才会触发handleRightClick方法。

3、.middle(只在鼠标中键点击时触发)

鼠标修饰符是指在特定的事件处理函数中,使用不同的鼠标按键触发事件。对于中键按钮,可以使用.middle修饰符。

例如,当你需要在鼠标中键点击时触发一个事件处理函数,你可以这样写:

<button @click.middle="handleMiddleClick">中键点击</button>

在上面的例子中,当用户在按钮上点击中键时,handleMiddleClick函数将被调用。

3、.passive(指定事件监听器为被动模式,可以提升滚动性能)

鼠标修饰符中的passive修饰符用于改善页面的滚动性能。传统上,当一个滚动事件被触发时,浏览器将等待所有的事件处理程序完成后再执行滚动操作。但是,使用passive修饰符可以告诉浏览器,事件处理程序不会调用preventDefault()来阻止滚动行为,从而使得浏览器可以在滚动操作即将发生时立即进行滚动处理,提高滚动的流畅度和响应性能。

使用passive修饰符非常简单,只需在事件监听的时候添加passive修饰符即可。例如:

<template>
  <div @scroll.passive="handleScroll">Scrollable content</div>
</template>

<script>
export default {
  methods: {
    handleScroll() {
      // 处理滚动事件的代码
    }
  }
}
</script>

在上述示例中,当div元素发生滚动事件时,会调用handleScroll方法。并且使用了passive修饰符,告诉浏览器该事件处理程序不会阻止滚动行为。

总而言之,passive修饰符可以帮助优化滚动性能,特别是在处理滚动事件时,使用passive修饰符可以提高滚动的流畅度和响应性能。

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

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

相关文章

何为算法之空间复杂度

前言 不知前面所讲的算法的十大特征你是否记住了呢&#xff1f;其实除了这十大特征之外&#xff0c;算法还有两个衡量标准。 不同的问题需要使用不同的算法作为策略&#xff0c;不同的算法也可能占用不同的时间和空间来完成相同的任务&#xff0c;这时候&#xff0c;对算法的选…

强化学习的数学原理学习笔记 - RL基础知识

文章目录 Roadmap&#x1f7e1;基础概念贝尔曼方程&#xff08;Bellman Equation&#xff09;基本形式矩阵-向量形式迭代求解状态值 vs. 动作值 &#x1f7e1;贝尔曼最优方程&#xff08;Bellman Optimality Equation&#xff0c;BOE&#xff09;基本形式迭代求解 本系列文章介…

alibabacloud学习笔记02(小滴课堂)

什么是注册中心和常见的注册中心有哪些 介绍什么是Nacos和搭建实战 启动Nacos 使用前要先安装jdk。 linux学习专栏笔记中有&#xff0c;大家可以去看。 关闭nacos: 这样我们就登录了nacos。 项目集成Nacos实现服务直接的调用 每个子模块都去添加。 给每个子模块配置nacos配…

ReentrantLock底层原理学习二

以 ReentrantLock 作为切入点&#xff0c;来看看在这个场景中是如何使用 AQS 来实现线程的同步的 ReentrantLock 的时序图 调用 ReentrantLock 中的 lock()方法&#xff0c;源码的调用过程我使用了时序图来展现。ReentrantLock.lock() 这个是 reentrantLock 获取锁的入口 pu…

小H靶场笔记:DC-4

DC-4 January 4, 2024 2:37 PM Tags: teehee提权 Owner&#xff1a;只惠摸鱼 信息收集 探测靶机ip&#xff0c;发现应该是192.168.199.134 扫一下开放端口&#xff08;22、80&#xff09;、服务、版本、漏洞 根据扫描结果&#xff0c;在80端口可能有CSRF漏洞&#xff0c;…

好书推荐丨人工智能B2B落地实战:基于云和Python的商用解决方案(清华社)

文章目录 写在前面人工智能推荐图书图书简介简明目录 推荐理由粉丝福利写在后面 写在前面 本期博主给大家推荐一本全新正版的好书&#xff1a;《人工智能B2B落地实战&#xff1a;基于云和Python的商用解决方案》&#xff01;这本书来自清华大学出版社&#xff0c;是今年刚刚出…

十八:爬虫-JS逆向(下)

一&#xff1a;AES与DES DES对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥&#xff0c;信息的发送者。和信息的接收者在进行信息的传输与处理时&#xff0c;必须共同持有该密钥(称为对称密码),是一种对称加密算法。一般来说加密用的是encrypt()函…

Linux服务器安装操作Nginx

1.下载nginx压缩包 //进入/usr/local目录创建一个文件夹 cd /usr/local mkdir nginx cd nginx //下载tar包 wget http://nginx.org/download/nginx-1.20.1.tar.gz 2.配置nginx安装所需的环境 1. 安装gcc 安装 nginx 需要先将官网下载的源码进行编译&#xff0c;编译依赖 gc…

Linux查找命令@which、find

目录 which概念语法作用 find概念语法按文件名查找按文件大小查找 作用演示一演示二演示三 通配符 总结 which 概念 which 是一个常用的 Linux/Unix 命令&#xff0c;用于查找并显示指定命令的绝对路径。 语法 which 要查找的命令 》无参数。 》 which后面&#xff0c;跟要查…

Android studio Progress Bar 进度条应用设计

一、水平进度条: 1)、xml布局文件: 2)、java文件: progressBar1 = findViewById(R.id.progressBar); progressBar2 = findViewById(R.id.progressBar2); public class AlarmTask extends TimerTask {@Overridepublic void run() {progressValue++;if (progressVa…

计网知识点回归

概述 计算机网络的定义&#xff1a; 不同地理位置的计算机通过通信电路实现资源共享 计算机网络的组成&#xff1a; 资源子网——提供共享的软硬件资源 通信子网——提供信息交换的网络接点和通信线路 计算机网络分类&#xff1a; 按拓扑分&#xff1a;星形 树形 总线型 环形…

清华大学生物信息学课件资料分享

清华大学鲁志老师实验室在网上分享了他们的生信课程学习资料&#xff0c;有电子书&#xff0c;PPT和视频&#xff0c;真是生信学习者的福音。 实验室网址是&#xff1a; https://www.ncrnalab.org/courses/#bioinfo2 可以看到&#xff0c;课程有针对本科生的&#xff0c;也有针…

shp文件与数据库(创建表)

前言 第三方库准备 shp文件是什么&#xff1f;笔者就不多做解释。后面将使用python的一些第三方库 1、sqlalchemy 2、pyshp 3、geoalchemy2 4、geopandas 这四个是主要的库&#xff0c;具体怎么使用可以参考相关教程&#xff0c;当然还有其他库&#xff0c;后面在介绍。…

uniapp 微信小程序跳转外部链接

一、背景&#xff1a; 开发小程序时&#xff0c;跳转到内部路径通常会使用&#xff1a;uni.navigateTo&#xff0c;uni.redirectTo&#xff0c;uni.reLaunch&#xff0c;uni.switchTab等方法&#xff0c;可以跳转到pages.json中已经注册的页面 uni.navigateTo(OBJECT) | uni-…

【KingbaseES】DataGrip配置链接KingbaseES V8R6数据库

新建驱动 填写内容如下&#xff1a; defaultjdbc:kingbase8://{host::localhost}:[{port::54321}]/[{:database::test}] 点击OK保存 测试链接 出现上图证明已经能链接了&#xff0c;保存链接看看数据库是否有我们的数据 发现好像什么都没有 再尝试&#xff0c;发现现在可以…

前端发开的性能优化 请求级:请求前(资源预加载和预读取)

预加载 预加载&#xff1a;是优化网页性能的重要技术&#xff0c;其目的就是在页面加载过程中先提前请求和获取相关的资源信息&#xff0c;减少用户的等待时间&#xff0c;提高用户的体验性。预加载的操作可以尝试去解决一些类似于减少首次内容渲染的时间&#xff0c;提升关键资…

ArkTS - 数据持久化

一、概述 应用数据持久化&#xff0c;是指应用将内存中的数据通过文件或数据库的形式保存到设备上。内存中的数据形态通常是任意的数据结构或数据对象&#xff0c;存储介质上的数据形态可能是文本、数据库、二进制文件等。 持久&#xff08;Persistence&#xff09;&#xff0…

如何查看崩溃日志

​ 目录 描述 思路 查看ipa包崩溃日志 简单查看手机崩溃信息几种方式 方式1:手机设置查看崩溃日志 方式2: Xocde工具 方式3: 第三方软件克魔助手 环境配置 实时日志 奔溃日志分析 方式四&#xff1a;控制台资源库 线上崩溃日志 线上监听crash的几种方式 方式1: 三…

GEC6818科大讯飞离线语音识别

GEC6818科大讯飞离线语音识别 文章目录 GEC6818科大讯飞离线语音识别一、 下载科大讯飞离线语音SDK二、 解压文件夹后三、与GEC6818开发板一起使用3.1 使用科大讯飞的离线语音在ubantu中运行&#xff0c;作为服务端进行关键字的识别3.2 call.bnf-->hehe.bnf3.3 asr_offine_s…

JavaWeb基础(1)- Html与JavaScript(JavaScript基础语法、变量、数据类型、运算符、函数、对象、事件监听、正则表达式)

JavaWeb基础&#xff08;1&#xff09;- Html与JavaScript(JavaScript基础语法、变量、数据类型、运算符、函数、对象、事件监听、正则表达式) 文章目录 JavaWeb基础&#xff08;1&#xff09;- Html与JavaScript(JavaScript基础语法、变量、数据类型、运算符、函数、对象、事件…