document的一点思索

本文探讨了前端性能优化的方法,特别是通过改进DOM操作来减少浏览器负担的技术。作者分享了如何优化自定义JavaScript库中的元素创建与操作过程,并提出了一种通过缓存document变量以提升效率的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

英语专八学前端,在家学习ing;
今日看了一些关于性能提升的东西;
反思之前写的两篇文章:
http://blog.youkuaiyun.com/power8988/article/details/74010738
http://blog.youkuaiyun.com/power8988/article/details/73864427
在每篇文章开头都有以下代码;

window.onload=function () {
    var el=function(){
        this.$=function(sel){
            var sel=document.querySelectorAll(sel);
            return sel.length===1?sel[0]:sel;
            //        这里需要改进,还没想好
        };
        this.newEl=function(el){
            return document.createElement(el)
        };
        this.frag=function(el){
            return document.createDocumentFragment().appendChild(this.newEl(el))
        };
        this.append=function (par,el){
            var par=this.$(par);
            var son=this.frag(el);
            par.appendChild(son)
        };
        this.content=function(el,content){
            var el=this.$(el);
            el.innerHTML=content;
        };
        this.addAttribute=function(el,attr,attrVal){
           this.$(el).setAttribute(attr,attrVal);
        }
    };
    var newtable=new el();
    newtable.append("table","tbody");
    newtable.addAttribute("table","class","table");
    newtable.append("tbody","tr");
    newtable.append("tr","td");
    newtable.addAttribute("td","class","bg-primary");
    newtable.content(".bg-primary","hello");
    newtable.append("tr","td");
    newtable.addAttribute("tr td:nth-child(2)","class","bg-success");
    newtable.content(".bg-success","world");
}

这里每执行一次操作,就需要自上而下查找,“查找局部作用域中的局部变量的速度应该是最快的”,所以最好一开始使用函数时,将当时的document保存起来;

 window.onload=function () {
        var el=function(){
            var doc=document;
            this.$=function(sel){
                var sel=doc.querySelectorAll(sel);
                return sel.length===1?sel[0]:sel;
                //        这里需要改进,还没想好
            };
            this.newEl=function(el){
                return doc.createElement(el)
            };
            this.frag=function(el){
                return doc.createDocumentFragment().appendChild(this.newEl(el))
            };
            this.append=function (par,el){
                var par=this.$(par);
                var son=this.frag(el);
                par.appendChild(son)
            };
            this.content=function(el,content){
                var el=this.$(el);
                el.innerHTML=content;
            };
            this.addAttribute=function(el,attr,attrVal){
                this.$(el).setAttribute(attr,attrVal);
            }
        };

函数调用完毕,doc这个变量会被销毁,至于性能提高了多少,如何查看性能是否提高?this is a question;
还有一个就是继承的问题,需要下来好好想一想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liugang0605

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值