在 JavaScript 中,事件对象 event 是浏览器在事件被触发时自动传递给事件处理函数的一个参数,它包含了事件发生时的所有信息,如鼠标位置、键盘按键、事件类型、目标元素等。
🧠 一句话解释:
event是一个包含了当前事件信息的对象,当你监听一个事件(如 click、keydown)时,JS 会将它作为参数传入事件处理函数。
📦 常见事件对象结构
element.addEventListener("click", function(event) {
  console.log(event);         // 打印整个事件对象
  console.log(event.type);    // click
  console.log(event.target);  // 被点击的元素
});
🎯 1. event 常用属性
| 属性 / 方法 | 含义 | 
|---|---|
event.type | 事件类型,如 "click"、"keydown" | 
event.target | 事件触发的目标元素(可能是子元素) | 
event.currentTarget | 当前绑定事件的元素(通常是你监听的元素) | 
event.clientX/Y | 鼠标相对浏览器窗口的 X/Y 坐标 | 
event.pageX/Y | 鼠标相对文档页面的坐标(包含滚动) | 
event.key | 按下的键名(如 "a"、"Enter") | 
event.keyCode | 按键对应的 ASCII 编码(已废弃) | 
event.preventDefault() | 阻止默认行为,如链接跳转、表单提交等 | 
event.stopPropagation() | 阻止事件冒泡到父元素 | 
🧪 2. 示例:点击事件获取坐标
document.addEventListener("click", function(event) {
  console.log("你点击了页面!");
  console.log("位置:", event.clientX, event.clientY);
});
⌨️ 3. 示例:键盘事件
document.addEventListener("keydown", function(event) {
  console.log("你按下了:", event.key);   // 例如 "a", "Enter"
});
🧱 4. 阻止默认行为 + 冒泡
<a href="https://www.google.com" id="link">点我</a>
<script>
  document.getElementById("link").addEventListener("click", function(event) {
    event.preventDefault();      // 阻止跳转
    event.stopPropagation();     // 阻止冒泡
    alert("你点击了链接,但我拦住了它!");
  });
</script>
🚦 5. 常见事件类型与使用场景
| 事件名 | 说明 | 
|---|---|
click | 鼠标点击 | 
mousemove | 鼠标移动 | 
keydown | 按下键盘 | 
submit | 表单提交 | 
change | 表单值变更 | 
input | 输入框实时输入 | 
contextmenu | 右键菜单事件 | 
🧠 小知识:事件对象是如何传入的?
在原生 JS 中:
element.addEventListener('click', function(event) {
  // event 是浏览器自动传进来的
});
在 HTML 行内绑定中,需显式传入:
<button onclick="sayHi(event)">点我</button>
<script>
  function sayHi(e) {
    console.log(e.target);  // <button>
  }
</script>
✅ 总结
| 要点 | 内容 | 
|---|---|
什么是 event | 包含事件类型、触发对象、鼠标/键盘数据等 | 
| 如何获取 | 事件监听器函数的第一个参数 | 
| 用途 | 获取事件详情、阻止默认行为、阻止冒泡、判断按键等 | 
发表回复