zoukankan      html  css  js  c++  java
  • #Javascript高级编程读书笔记#13.5 内存和性能

    #Javascript高级编程读书笔记#13.5 内存和性能

     

    13.5 内存和性能

    Javascript 中函数都是对象,过多被添加到事件的处理程序都会占用内存,内存中对象越多性能就越差。其次,事先指定好所有事件处理程序而导致的DOM访问次数也会延迟整个页面的交互就绪时间

    对付“事件处理程序过多”的方案就是事件委托,事件委托利用了事件冒泡只指定一个事件处理程序就可以管理某一类型的所有事件,例如 click 时间会一直冒泡到 document 层次,可以为整个页面指定一个 onclick 事件处理程序,而不必给每个可单击的元素都添加上这个事件

    不好的做法:

    <ul id="myLinks">
        <li id="goSomewhere">Go somewhere</li>
        <li id="doSomething">Do something</li>
        <li id="talk">Say hi</li>
    </ul>
    
    // 为所有元素都设置了事件处理逻辑
    document.getElementId("goSomewhere").onclick = function(){
        location.href = "http://www.baidu.com";
    };
    document.getElementId("doSomething").onclick = function(){
        document.title = "I changed the document's title";
    };
    document.getElementId("talk").onclick = function(){
        alert("hi, man");
    };
    

    改良一下,只需在DOM树尽量最高层次上添加一个事件处理程序:

    var list = document.getElementById("myLinks");
    
    list.onclick = function(event){
        var target = event.target;
    
        switch(target.id){
            case "doSomething":
                document.title = "I changed the document's title";
                break;
            case "goSomewhere":
                location.href = "http://www.baidu.com";
                break;
            case "talk":
                alert("hi, man");
                break;
        }
    };
    
    ## 不重要的其实最重要
  • 相关阅读:
    这是一棵树吗
    感染者
    es6 语法
    css3 flex 详解,可以实现div内容水平垂直居中
    移动端实现复制内容至剪贴板小例子
    jq+mui 阻止事件冒泡
    移动端H5 判断IOS还是Android 平台
    移动端布局 rem,和px
    关于H5移动端开发 iPhone X适配
    H5 微信公众号 监听返回事件
  • 原文地址:https://www.cnblogs.com/onesea/p/13055180.html
Copyright © 2011-2022 走看看