2018_11_02_05.html 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <!DOCTYPE html>
  2. <html lang="en-US">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <title>JavaScript 事件流 | 看白鹿的博客</title>
  7. <meta name="description" content="只有敢于尝试,才能品味人生.">
  8. <link rel="icon" href="/logo.png">
  9. <link rel="preload" href="/assets/css/0.styles.9f9689a0.css" as="style"><link rel="preload" href="/assets/js/app.e708c228.js" as="script"><link rel="preload" href="/assets/js/3.db2f1e5f.js" as="script"><link rel="preload" href="/assets/js/89.87a60d2e.js" as="script"><link rel="prefetch" href="/assets/js/10.6ed737d5.js"><link rel="prefetch" href="/assets/js/100.ce57f417.js"><link rel="prefetch" href="/assets/js/101.3df935d9.js"><link rel="prefetch" href="/assets/js/102.c60ec37a.js"><link rel="prefetch" href="/assets/js/103.fc7cccb2.js"><link rel="prefetch" href="/assets/js/104.a96cfc21.js"><link rel="prefetch" href="/assets/js/105.cb7f28ee.js"><link rel="prefetch" href="/assets/js/106.c030cf9e.js"><link rel="prefetch" href="/assets/js/107.f7e716fd.js"><link rel="prefetch" href="/assets/js/108.96b61fa3.js"><link rel="prefetch" href="/assets/js/109.591848fa.js"><link rel="prefetch" href="/assets/js/11.f23848ff.js"><link rel="prefetch" href="/assets/js/110.933b3212.js"><link rel="prefetch" href="/assets/js/111.0be16d33.js"><link rel="prefetch" href="/assets/js/112.c5cf7e2b.js"><link rel="prefetch" href="/assets/js/113.1b6e7027.js"><link rel="prefetch" href="/assets/js/114.547f72dc.js"><link rel="prefetch" href="/assets/js/12.9768d711.js"><link rel="prefetch" href="/assets/js/13.e4dc8a2c.js"><link rel="prefetch" href="/assets/js/14.c68e579e.js"><link rel="prefetch" href="/assets/js/15.9c6cc7ea.js"><link rel="prefetch" href="/assets/js/16.25acc608.js"><link rel="prefetch" href="/assets/js/17.6bfdf855.js"><link rel="prefetch" href="/assets/js/18.f36b9d48.js"><link rel="prefetch" href="/assets/js/19.4fb7dc2f.js"><link rel="prefetch" href="/assets/js/20.97d64be6.js"><link rel="prefetch" href="/assets/js/21.1c992386.js"><link rel="prefetch" href="/assets/js/22.5686c25d.js"><link rel="prefetch" href="/assets/js/23.4be23257.js"><link rel="prefetch" href="/assets/js/24.33657f7f.js"><link rel="prefetch" href="/assets/js/25.320528b6.js"><link rel="prefetch" href="/assets/js/26.aa73b215.js"><link rel="prefetch" href="/assets/js/27.ae22b260.js"><link rel="prefetch" href="/assets/js/28.8a5d68dc.js"><link rel="prefetch" href="/assets/js/29.26665480.js"><link rel="prefetch" href="/assets/js/30.78e435df.js"><link rel="prefetch" href="/assets/js/31.944caa3d.js"><link rel="prefetch" href="/assets/js/32.eb2e15c1.js"><link rel="prefetch" href="/assets/js/33.c4ed4964.js"><link rel="prefetch" href="/assets/js/34.91e03ab0.js"><link rel="prefetch" href="/assets/js/35.2525221c.js"><link rel="prefetch" href="/assets/js/36.ff0f2ba1.js"><link rel="prefetch" href="/assets/js/37.07680168.js"><link rel="prefetch" href="/assets/js/38.6c20a418.js"><link rel="prefetch" href="/assets/js/39.264885d0.js"><link rel="prefetch" href="/assets/js/4.98339c5a.js"><link rel="prefetch" href="/assets/js/40.aa0df58e.js"><link rel="prefetch" href="/assets/js/41.00ec6a3a.js"><link rel="prefetch" href="/assets/js/42.4f9c2705.js"><link rel="prefetch" href="/assets/js/43.18c94874.js"><link rel="prefetch" href="/assets/js/44.b843dc53.js"><link rel="prefetch" href="/assets/js/45.ce601065.js"><link rel="prefetch" href="/assets/js/46.231ea9e5.js"><link rel="prefetch" href="/assets/js/47.3b100c97.js"><link rel="prefetch" href="/assets/js/48.2bd06ef1.js"><link rel="prefetch" href="/assets/js/49.b3c29988.js"><link rel="prefetch" href="/assets/js/5.4edccbb7.js"><link rel="prefetch" href="/assets/js/50.c128c076.js"><link rel="prefetch" href="/assets/js/51.57f910a7.js"><link rel="prefetch" href="/assets/js/52.9673b19c.js"><link rel="prefetch" href="/assets/js/53.74822412.js"><link rel="prefetch" href="/assets/js/54.94ead0f2.js"><link rel="prefetch" href="/assets/js/55.2657edb2.js"><link rel="prefetch" href="/assets/js/56.ca1f6b47.js"><link rel="prefetch" href="/assets/js/57.f2ffb074.js"><link rel="prefetch" href="/assets/js/58.aad3481a.js"><link rel="prefetch" href="/assets/js/59.6c6d9e19.js"><link rel="prefetch" href="/assets/js/6.1de86338.js"><link rel="prefetch" href="/assets/js/60.e1e4a1dd.js"><link rel="prefetch" href="/assets/js/61.c9aa409a.js"><link rel="prefetch" href="/assets/js/62.f9ff4c15.js"><link rel="prefetch" href="/assets/js/63.f7218d4f.js"><link rel="prefetch" href="/assets/js/64.fd4479bf.js"><link rel="prefetch" href="/assets/js/65.47b2f12e.js"><link rel="prefetch" href="/assets/js/66.1a99c0a9.js"><link rel="prefetch" href="/assets/js/67.791fada3.js"><link rel="prefetch" href="/assets/js/68.b1bec000.js"><link rel="prefetch" href="/assets/js/69.a639c2f3.js"><link rel="prefetch" href="/assets/js/7.cea02d3e.js"><link rel="prefetch" href="/assets/js/70.11ea071f.js"><link rel="prefetch" href="/assets/js/71.f53bb3d4.js"><link rel="prefetch" href="/assets/js/72.c5fab436.js"><link rel="prefetch" href="/assets/js/73.aed36f34.js"><link rel="prefetch" href="/assets/js/74.bcd8b441.js"><link rel="prefetch" href="/assets/js/75.8381ae34.js"><link rel="prefetch" href="/assets/js/76.a8ced92a.js"><link rel="prefetch" href="/assets/js/77.824eaeec.js"><link rel="prefetch" href="/assets/js/78.aca9fa09.js"><link rel="prefetch" href="/assets/js/79.bf315430.js"><link rel="prefetch" href="/assets/js/8.74f13dae.js"><link rel="prefetch" href="/assets/js/80.53eb46d1.js"><link rel="prefetch" href="/assets/js/81.bcf973bd.js"><link rel="prefetch" href="/assets/js/82.22b94ced.js"><link rel="prefetch" href="/assets/js/83.9993f5ed.js"><link rel="prefetch" href="/assets/js/84.376d4f1c.js"><link rel="prefetch" href="/assets/js/85.2e0f7fca.js"><link rel="prefetch" href="/assets/js/86.11c21705.js"><link rel="prefetch" href="/assets/js/87.9ca94b0e.js"><link rel="prefetch" href="/assets/js/88.500879fa.js"><link rel="prefetch" href="/assets/js/9.02d42a35.js"><link rel="prefetch" href="/assets/js/90.458ff2d4.js"><link rel="prefetch" href="/assets/js/91.2d25b4f0.js"><link rel="prefetch" href="/assets/js/92.ec4c7b72.js"><link rel="prefetch" href="/assets/js/93.35f65ff4.js"><link rel="prefetch" href="/assets/js/94.b9bb1a80.js"><link rel="prefetch" href="/assets/js/95.05151362.js"><link rel="prefetch" href="/assets/js/96.ed53cc9e.js"><link rel="prefetch" href="/assets/js/97.0ef7a53a.js"><link rel="prefetch" href="/assets/js/98.c43a624e.js"><link rel="prefetch" href="/assets/js/99.144eda80.js"><link rel="prefetch" href="/assets/js/vendors~docsearch.9416a2d8.js">
  10. <link rel="stylesheet" href="/assets/css/0.styles.9f9689a0.css">
  11. </head>
  12. <body>
  13. <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><!----> <span class="site-name">看白鹿的博客</span></a> <div class="links"><form id="search-form" role="search" class="algolia-search-wrapper search-box"><input id="algolia-search-input" class="search-query"></form> <nav class="nav-links can-hide"><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="前端" class="dropdown-title"><span class="title">前端</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/CSS/" class="nav-link">CSS</a></li><li class="dropdown-item"><!----> <a href="/FLUTTER/" class="nav-link">flutter</a></li><li class="dropdown-item"><!----> <a href="/GIT/" class="nav-link">GIT</a></li><li class="dropdown-item"><!----> <a href="/JavaScript/" class="nav-link router-link-active">JavaScript</a></li><li class="dropdown-item"><!----> <a href="/REACT/" class="nav-link">react</a></li><li class="dropdown-item"><!----> <a href="/VUE/" class="nav-link">vue</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="后台" class="dropdown-title"><span class="title">后台</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/NODE/" class="nav-link">node</a></li><li class="dropdown-item"><!----> <a href="/UBUNTU/" class="nav-link">ubuntu</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="其他" class="dropdown-title"><span class="title">其他</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/IDE/" class="nav-link">IDE</a></li><li class="dropdown-item"><!----> <a href="/About/WHY.html" class="nav-link">待了解</a></li><li class="dropdown-item"><!----> <a href="/INTERVIEW/" class="nav-link">面试</a></li><li class="dropdown-item"><!----> <a href="/hello/" class="nav-link">你好</a></li></ul></div></div><div class="nav-item"><a href="https://github.com/Johnhong9527" target="_blank" rel="noopener noreferrer" class="nav-link external">
  14. GitHub
  15. <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div> <!----></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="前端" class="dropdown-title"><span class="title">前端</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/CSS/" class="nav-link">CSS</a></li><li class="dropdown-item"><!----> <a href="/FLUTTER/" class="nav-link">flutter</a></li><li class="dropdown-item"><!----> <a href="/GIT/" class="nav-link">GIT</a></li><li class="dropdown-item"><!----> <a href="/JavaScript/" class="nav-link router-link-active">JavaScript</a></li><li class="dropdown-item"><!----> <a href="/REACT/" class="nav-link">react</a></li><li class="dropdown-item"><!----> <a href="/VUE/" class="nav-link">vue</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="后台" class="dropdown-title"><span class="title">后台</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/NODE/" class="nav-link">node</a></li><li class="dropdown-item"><!----> <a href="/UBUNTU/" class="nav-link">ubuntu</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="其他" class="dropdown-title"><span class="title">其他</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/IDE/" class="nav-link">IDE</a></li><li class="dropdown-item"><!----> <a href="/About/WHY.html" class="nav-link">待了解</a></li><li class="dropdown-item"><!----> <a href="/INTERVIEW/" class="nav-link">面试</a></li><li class="dropdown-item"><!----> <a href="/hello/" class="nav-link">你好</a></li></ul></div></div><div class="nav-item"><a href="https://github.com/Johnhong9527" target="_blank" rel="noopener noreferrer" class="nav-link external">
  16. GitHub
  17. <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/JavaScript/" class="sidebar-link">JS 目录</a></li><li><a href="/JavaScript/2018_10_29_02.html" class="sidebar-link">代码收集</a></li><li><a href="/JavaScript/2018_10_28_01.html" class="sidebar-link">动态替换图片</a></li><li><a href="/JavaScript/2018_11_02_01.html" class="sidebar-link">战舰游戏</a></li><li><a href="/JavaScript/2018_11_02_02.html" class="sidebar-link">原理</a></li><li><a href="/JavaScript/2018_11_02_03.html" class="sidebar-link">匿名函数和闭包</a></li><li><a href="/JavaScript/2018_11_02_04.html" class="sidebar-link">instanceof运算符</a></li><li><a href="/JavaScript/2018_11_02_05.html" class="active sidebar-link">JavaScript 事件流</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/JavaScript/2018_11_02_05.html#定义" class="sidebar-link">定义</a></li><li class="sidebar-sub-header"><a href="/JavaScript/2018_11_02_05.html#分析" class="sidebar-link">分析</a></li><li class="sidebar-sub-header"><a href="/JavaScript/2018_11_02_05.html#事件处理程序" class="sidebar-link">事件处理程序</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/JavaScript/2018_11_02_05.html#html-事件处理程序" class="sidebar-link">html 事件处理程序</a></li><li class="sidebar-sub-header"><a href="/JavaScript/2018_11_02_05.html#dom0-级事件处理程序" class="sidebar-link">DOM0 级事件处理程序</a></li><li class="sidebar-sub-header"><a href="/JavaScript/2018_11_02_05.html#dom2-级事件处理程序" class="sidebar-link">DOM2 级事件处理程序</a></li><li class="sidebar-sub-header"><a href="/JavaScript/2018_11_02_05.html#建议" class="sidebar-link">建议</a></li></ul></li><li class="sidebar-sub-header"><a href="/JavaScript/2018_11_02_05.html#ie-事件处理程序" class="sidebar-link">IE 事件处理程序</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/JavaScript/2018_11_02_05.html#attachevent" class="sidebar-link">attachEvent()</a></li><li class="sidebar-sub-header"><a href="/JavaScript/2018_11_02_05.html#detachevent" class="sidebar-link">detachEvent()</a></li></ul></li><li class="sidebar-sub-header"><a href="/JavaScript/2018_11_02_05.html#跨浏览器的事件处理程序" class="sidebar-link">跨浏览器的事件处理程序</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/JavaScript/2018_11_02_05.html#addhandler-removehandler" class="sidebar-link">addHandler()|removeHandler()</a></li></ul></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="javascript-事件流"><a href="#javascript-事件流" class="header-anchor">#</a> JavaScript 事件流</h1> <h2 id="定义"><a href="#定义" class="header-anchor">#</a> 定义</h2> <blockquote><p>申明:本文仅限私人学习之用---- <a href="http://www.cnblogs.com/blackwood/archive/2013/03/14/2959195.html" target="_blank" rel="noopener noreferrer">原文<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>;</p></blockquote> <blockquote><p>下图展示了完整的 js 事件流</p></blockquote> <p><img src="/images/js/2018_11_02/o_eventpic.jpg" alt="tp"></p> <h4 id="捕获阶段:document-elementhtml-elementbody-elementdiv"><a href="#捕获阶段:document-elementhtml-elementbody-elementdiv" class="header-anchor">#</a> 捕获阶段:Document==&gt;ElementHtml==&gt;ElementBody==&gt;ElementDiv</h4> <h4 id="冒泡阶段:elementdiv-elementbody-elementhtml-document"><a href="#冒泡阶段:elementdiv-elementbody-elementhtml-document" class="header-anchor">#</a> 冒泡阶段:ElementDiv==&gt;ElementBody==&gt;ElementHtml==&gt;Document</h4> <h2 id="分析"><a href="#分析" class="header-anchor">#</a> 分析</h2> <blockquote><h4 id="捕获阶段:"><a href="#捕获阶段:" class="header-anchor">#</a> 捕获阶段:</h4> <p>document 对象首先接收到 click 事件,然后事件沿 DOM 树依次向下,一直传播到事件的实际目标。<br></p></blockquote> <blockquote><h4 id="冒泡阶段:"><a href="#冒泡阶段:" class="header-anchor">#</a> 冒泡阶段:</h4> <p>IE 的事件流叫做事件冒泡(event bubbling),即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点( 文档)。</p></blockquote> <h2 id="事件处理程序"><a href="#事件处理程序" class="header-anchor">#</a> 事件处理程序</h2> <h3 id="html-事件处理程序"><a href="#html-事件处理程序" class="header-anchor">#</a> html 事件处理程序</h3> <blockquote><h4 id="事件对象:"><a href="#事件对象:" class="header-anchor">#</a> 事件对象:</h4></blockquote> <pre><code>event:不是自己定义的,是給元素綁定事件之后,自动生成的局部变量,表示事件对象。
  18. this:在函數內部,等于事件的目标元素;在函數內部可以像访问局部变量一样访问document及该元素本身的成员。
  19. </code></pre> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">//如果当前元素是一個表单的輸入元素,则作用域中还会包含访问表单元素(父元素)的入口</span>
  20. <span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  21. <span class="token keyword">with</span> <span class="token punctuation">(</span>document<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  22. <span class="token keyword">with</span> <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>from<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  23. <span class="token comment">//元素属性值</span>
  24. <span class="token punctuation">}</span>
  25. <span class="token punctuation">}</span>
  26. <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  27. </code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div></div><h4 id="缺点:"><a href="#缺点:" class="header-anchor">#</a> 缺点:</h4> <pre><code>1.时差问题,用戶可能会在HTML元素一出現在页面上时,就触发相应事件,
  28. 但当时该事件有可能不具备执行条件。
  29. 2.这样扩展事件处理程序的作用域链在不同浏览器中会导致不同结果。
  30. 不同JavaScript引擎遵循的标识符解析规则略有差异,
  31. 很可能会在访问非限定对象成员时出错。(高耦合)
  32. </code></pre> <h3 id="dom0-级事件处理程序"><a href="#dom0-级事件处理程序" class="header-anchor">#</a> DOM0 级事件处理程序</h3> <blockquote><p>通过 js 指定事件处理程序的传统方式,就是将一个函数赋值给一个事件处理程序属性</p></blockquote> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">//创建</span>
  33. <span class="token keyword">var</span> btn <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'myBtn'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  34. btn<span class="token punctuation">.</span><span class="token function-variable function">onclick</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  35. <span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'Clicked'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  36. <span class="token punctuation">}</span><span class="token punctuation">;</span>
  37. <span class="token comment">//删除</span>
  38. btn<span class="token punctuation">.</span>onclick <span class="token operator">=</span> <span class="token keyword">null</span><span class="token punctuation">;</span>
  39. </code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><h3 id="dom2-级事件处理程序"><a href="#dom2-级事件处理程序" class="header-anchor">#</a> DOM2 级事件处理程序</h3> <h4 id="addeventlistener"><a href="#addeventlistener" class="header-anchor">#</a> addEventListener()</h4> <blockquote><p>为指定事件添加处理程序</p></blockquote> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">// 下面这段程序中因为添加了false,所以该事件会在冒泡阶段被触发</span>
  40. <span class="token keyword">var</span> btn <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'myBtn'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  41. btn<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span>
  42. <span class="token string">'click'</span><span class="token punctuation">,</span>
  43. <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  44. <span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'this.id'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  45. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  46. <span class="token boolean">false</span><span class="token punctuation">,</span>
  47. <span class="token punctuation">)</span><span class="token punctuation">;</span>
  48. <span class="token comment">// 使用 DOM2 级方法添加事件处理程序的主要好处是可以添加多个事件处理程序。</span>
  49. <span class="token comment">// 这两个事件处理程序会按照添加它们的顺序触发,因此首先会显示元素的ID,其次会显示&quot; Hello world!&quot; 消息。</span>
  50. <span class="token keyword">var</span> btn <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'myBtn'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  51. btn<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span>
  52. <span class="token string">'click'</span><span class="token punctuation">,</span>
  53. <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  54. <span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'this.id'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  55. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  56. <span class="token boolean">false</span><span class="token punctuation">,</span>
  57. <span class="token punctuation">)</span><span class="token punctuation">;</span>
  58. btn<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span>
  59. <span class="token string">'click'</span><span class="token punctuation">,</span>
  60. <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  61. <span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'Hello World!'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  62. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  63. <span class="token boolean">false</span><span class="token punctuation">,</span>
  64. <span class="token punctuation">)</span><span class="token punctuation">;</span>
  65. </code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br></div></div><h4 id="removeeventlistener"><a href="#removeeventlistener" class="header-anchor">#</a> removeEventListener()</h4> <blockquote><p>删除事件处理程序</p></blockquote> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">// 下面这个函数,虽然看起来合乎逻辑,</span>
  66. <span class="token comment">// 但是removeEventListener清除的程序与addEventListener绑定的事件不是同一个</span>
  67. <span class="token keyword">var</span> btn <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'myBtn'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  68. btn<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span>
  69. <span class="token string">'click'</span><span class="token punctuation">,</span>
  70. <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  71. <span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'Hello World!'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  72. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  73. <span class="token boolean">false</span><span class="token punctuation">,</span>
  74. <span class="token punctuation">)</span><span class="token punctuation">;</span>
  75. btn<span class="token punctuation">.</span><span class="token function">removeEventListener</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  76. <span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'Hello World!'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  77. <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  78. <span class="token comment">// 我们在这里用另一个例子来表现,这个例子中绑定事件程序与删除事件程序使用了相同的函数</span>
  79. <span class="token keyword">var</span> btn <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'myBtn'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  80. <span class="token keyword">var</span> <span class="token function-variable function">handler</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  81. <span class="token function">alert</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>id<span class="token punctuation">)</span><span class="token punctuation">;</span>
  82. <span class="token punctuation">}</span><span class="token punctuation">;</span>
  83. btn<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> handler<span class="token punctuation">,</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  84. btn<span class="token punctuation">.</span><span class="token function">removeEventListener</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> handler<span class="token punctuation">,</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  85. </code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br></div></div><h3 id="建议"><a href="#建议" class="header-anchor">#</a> 建议</h3> <blockquote><p>大多数情况下,都是将事件处理程序添加到事件流的冒泡阶段,这样可以最大限度地兼容各种浏览器。最好只在需要在事件到达目标之前截获它的时候将事件处理程序添加到捕获阶段。如果不是特别需要,我们不建议在事件捕获阶段注册事件处理程序。</p></blockquote> <h2 id="ie-事件处理程序"><a href="#ie-事件处理程序" class="header-anchor">#</a> IE 事件处理程序</h2> <blockquote><p>IE 实现了与 DOM 中类似的两个方法:attachEvent()和 detachEvent()。这两个方法接受相同的两个参数:事件处理程序名称与事件处理程序函数。由于 IE8 及更早版本只支持事件冒泡,所以通过 attachEvent()添加的事件处理程序都会被添加到冒泡阶段。</p></blockquote> <h3 id="attachevent"><a href="#attachevent" class="header-anchor">#</a> attachEvent()</h3> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">/* 下面这个例子中 事件绑定 时 ,第一个参数用的是 onclick,
  86. IE使用attachEvent()与使用DOM0方法的主要区别在于处理程序的作用域。*/</span>
  87. <span class="token keyword">var</span> btn <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'MyBtn'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  88. btn<span class="token punctuation">.</span><span class="token function">attachEvent</span><span class="token punctuation">(</span><span class="token string">'onclick'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  89. <span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'Clicked'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  90. <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  91. <span class="token comment">/* 在DOM0级方法的情况下,事件处理程序会在其所属元素的作用域内运行;
  92. 在使用attachEvent()方法的情况下,事件处理程序会在 全局作用域中运行,
  93. 因此this等于windows。 */</span>
  94. <span class="token keyword">var</span> btn <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'myBtn'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  95. btn<span class="token punctuation">.</span><span class="token function">attachEvent</span><span class="token punctuation">(</span><span class="token string">'onclick'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  96. <span class="token function">alert</span><span class="token punctuation">(</span><span class="token keyword">this</span> <span class="token operator">===</span> window<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//true</span>
  97. <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  98. <span class="token comment">// 添加多个元素的方法</span>
  99. <span class="token keyword">var</span> btn <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'myBtn'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  100. <span class="token keyword">var</span> <span class="token function-variable function">handler</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  101. <span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'Hello World!'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  102. <span class="token punctuation">}</span><span class="token punctuation">;</span>
  103. <span class="token keyword">var</span> <span class="token function-variable function">hello</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  104. <span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'hello'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  105. <span class="token punctuation">}</span><span class="token punctuation">;</span>
  106. btn<span class="token punctuation">.</span><span class="token function">attachEvent</span><span class="token punctuation">(</span><span class="token string">'onclick'</span><span class="token punctuation">,</span> handler<span class="token punctuation">)</span><span class="token punctuation">;</span>
  107. btn<span class="token punctuation">.</span><span class="token function">attachEvent</span><span class="token punctuation">(</span><span class="token string">'onclick'</span><span class="token punctuation">,</span> hello<span class="token punctuation">)</span><span class="token punctuation">;</span>
  108. <span class="token comment">// 执行顺序:多事件绑定,执行顺序是以倒序的方式执行的。</span>
  109. <span class="token comment">// hello</span>
  110. <span class="token comment">// Hello World!</span>
  111. </code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br></div></div><h3 id="detachevent"><a href="#detachevent" class="header-anchor">#</a> detachEvent()</h3> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">// 移除attachEvent添加的事件处理程序程序</span>
  112. <span class="token keyword">var</span> btn <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'myBtn'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  113. <span class="token keyword">var</span> <span class="token function-variable function">handler</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  114. <span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'Clicked'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  115. <span class="token punctuation">}</span><span class="token punctuation">;</span>
  116. btn<span class="token punctuation">.</span><span class="token function">attachEvent</span><span class="token punctuation">(</span><span class="token string">'onclick'</span><span class="token punctuation">,</span> handler<span class="token punctuation">)</span><span class="token punctuation">;</span>
  117. btn<span class="token punctuation">.</span><span class="token function">detachEvent</span><span class="token punctuation">(</span><span class="token string">'onclick'</span><span class="token punctuation">,</span> handler<span class="token punctuation">)</span><span class="token punctuation">;</span>
  118. </code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><h2 id="跨浏览器的事件处理程序"><a href="#跨浏览器的事件处理程序" class="header-anchor">#</a> 跨浏览器的事件处理程序</h2> <h3 id="addhandler-removehandler"><a href="#addhandler-removehandler" class="header-anchor">#</a> addHandler()|removeHandler()</h3> <blockquote><p>这 2 个方法属于一个名叫 EventUtil 的对象<br>
  119. 参数:要操作的元素 | 事件名称 | 事件处理接受程序</p></blockquote> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">/* 解析:首先判断是否存在DOM2级方法,如果存在==&gt;传入事件类型,
  120. 事件处理程序函数,和第三个参数方法false(表示冒泡阶段),
  121. 如果存在的是IE的方法,就采用第二种方法,为了兼容IE8及跟早的版本,
  122. 此时的时间类型必须加上&quot;on&quot;前缀。
  123. 最后一种是DOm0级方法(现代浏览器,一般不会执行这里的代码),
  124. 使用方括号语法将属性名指定为事件处理程序或者将属性设置为null;*/</span>
  125. <span class="token keyword">var</span> EventUtil <span class="token operator">=</span> <span class="token punctuation">{</span>
  126. <span class="token function-variable function">addHandler</span><span class="token punctuation">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">element<span class="token punctuation">,</span> type<span class="token punctuation">,</span> handler</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  127. <span class="token keyword">if</span> <span class="token punctuation">(</span>element<span class="token punctuation">.</span>addEventListener<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  128. element<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span>type<span class="token punctuation">,</span> handler<span class="token punctuation">,</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  129. <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>element<span class="token punctuation">.</span>attachEvent<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  130. element<span class="token punctuation">.</span><span class="token function">attachEvent</span><span class="token punctuation">(</span><span class="token string">'on'</span> <span class="token operator">+</span> type<span class="token punctuation">,</span> handler<span class="token punctuation">)</span><span class="token punctuation">;</span>
  131. <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
  132. element<span class="token punctuation">[</span><span class="token string">'on'</span> <span class="token operator">+</span> type<span class="token punctuation">]</span> <span class="token operator">=</span> handler<span class="token punctuation">;</span>
  133. <span class="token punctuation">}</span>
  134. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  135. <span class="token function-variable function">removeHandler</span><span class="token punctuation">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">element<span class="token punctuation">,</span> type<span class="token punctuation">,</span> handler</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  136. <span class="token keyword">if</span> <span class="token punctuation">(</span>element<span class="token punctuation">.</span>removeEventListener<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  137. element<span class="token punctuation">.</span><span class="token function">removeEventListener</span><span class="token punctuation">(</span>element<span class="token punctuation">,</span> type<span class="token punctuation">,</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  138. <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>element<span class="token punctuation">.</span>detachEvent<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  139. element<span class="token punctuation">.</span><span class="token function">detachEvent</span><span class="token punctuation">(</span><span class="token string">'on'</span> <span class="token operator">+</span> type<span class="token punctuation">,</span> handler<span class="token punctuation">)</span><span class="token punctuation">;</span>
  140. <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
  141. element<span class="token punctuation">[</span><span class="token string">'on'</span> <span class="token operator">+</span> type<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token keyword">null</span><span class="token punctuation">;</span>
  142. <span class="token punctuation">}</span>
  143. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  144. <span class="token punctuation">}</span><span class="token punctuation">;</span>
  145. <span class="token comment">// 实例:使用EventUtil对象==&gt;绑定click事件并删除click事件</span>
  146. <span class="token comment">// 分析:由于addHandler和removeHandler没有考虑到所有浏览器的问题,</span>
  147. <span class="token comment">// 例如IE浏览器中的作用域的问题,所以我们往往只用作添加处理程序或者移除处理程序。</span>
  148. <span class="token comment">//提示:只DoM0级的浏览器已经不多了,所以需要注意的问题不是很多</span>
  149. <span class="token keyword">var</span> btn <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'myBtn'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  150. <span class="token keyword">var</span> <span class="token function-variable function">handler</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  151. <span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'你好!'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  152. <span class="token punctuation">}</span><span class="token punctuation">;</span>
  153. EventUtil<span class="token punctuation">.</span><span class="token function">addHandler</span><span class="token punctuation">(</span>btn<span class="token punctuation">,</span> <span class="token string">'click'</span><span class="token punctuation">,</span> handler<span class="token punctuation">)</span><span class="token punctuation">;</span>
  154. EventUtil<span class="token punctuation">.</span><span class="token function">removeHandler</span><span class="token punctuation">(</span>btn<span class="token punctuation">,</span> <span class="token string">'click'</span><span class="token punctuation">,</span> handler<span class="token punctuation">)</span><span class="token punctuation">;</span>
  155. </code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br><span class="line-number">36</span><br><span class="line-number">37</span><br></div></div></div> <footer class="page-edit"><!----> <div class="last-updated"><span class="prefix">Last Updated:</span> <span class="time">11/2/2018, 4:24:41 PM</span></div></footer> <div class="page-nav"><p class="inner"><span class="prev">
  156. <a href="/JavaScript/2018_11_02_04.html" class="prev">instanceof运算符</a></span> <!----></p></div> </main></div><div class="global-ui"></div></div>
  157. <script src="/assets/js/app.e708c228.js" defer></script><script src="/assets/js/3.db2f1e5f.js" defer></script><script src="/assets/js/89.87a60d2e.js" defer></script>
  158. </body>
  159. </html>