美文网首页
「JavaScript」 基础知识要点及常考面试题(四)---

「JavaScript」 基础知识要点及常考面试题(四)---

作者: ybrelax | 来源:发表于2019-08-02 17:35 被阅读0次

事件的委托

所谓的事件委托,通过监听一个父元素,来给不同的子元素绑定事件,减少监听次数,从而提升速度。
eg:

<body>
    <ul id="isUl">
        <li id="li01">1</li>
        <li id="li02">2</li>
        <li id="li03">3</li>
    </ul>
    <script>
        function clickLi01() {
            alert('你点击了第1个li');
        }
        function clickLi02() {
            alert('你点击了第2个li');
        }
        function clickLi03() {
            alert('你点击了第3个li');
        }
        document.getElementById('isUl').addEventListener('click', function(event) {
            var srcID = event.target.id;
            if(srcID == 'li01'){
                clickLi01();
            }else if(srcID == 'li02') {
                clickLi02();
            }else if(srcID == 'li03') {
                clickLi03();
            }
        });
    </script>
</body>

new 做了什么操作

  1. 创建一个新对象,同时继承对象类的原型,即xxx.prototype
  2. 执行类的构造函数,同时将改实例上的属性和方法被this引用,即this指向新的构造函数
  3. 如果构造函数放回一个新对象,那么这个对象就会取代new出来的结果。如果构造函数没有return对象,即返回隐式的this

for of , for...in.. 的区别

https://www.jianshu.com/p/c43f418d6bf0

事件冒泡和事件捕获有什么区别

事件捕获:当触发子元素身上的事件,会先触发父元素,然后在传递给子元素
事件冒泡:当给父子元素的同一事件绑定方法时,触发子元素身上的事件,执行完毕之后,也会触发父级元素相同的事件。

事件委托

通过父节点事件来传播到子节点(事件捕获)
问:怎么判断你点了是第几个子节点

<!DOCTYPE html>
<html>
  <body>
    <ul>
      <li>1</li>
      <li>2</li>
      <li>3</li>
    </ul>
  </body>

  <script>
    window.onload = function() {
      let $ul = document.getElementsByTagName('ul')[0];
      let $lis = document.getElementsByTagName('li')
      $ul.addEventListener('click', function(e) {
        let target = e.target
        for(let i = 0; i< $lis.length; i++) {
            if (target === $lis[i]) {
                console.log('你点击了第', i + 1 , '个')
            }
        }
      });
    };
  </script>
</html>

移动端 click和touch事件的区别

移动端的touch click事件的理解

相关文章

网友评论

      本文标题:「JavaScript」 基础知识要点及常考面试题(四)---

      本文链接:https://www.haomeiwen.com/subject/levvrctx.html