删除属性

删除属性

https://img1.sycdn.imooc.com//climg/647402b709dbfebd05950345.jpg

https://img1.sycdn.imooc.com//climg/647402d5094cf03306080207.jpg

为什么把那些this.critical_point等属性给删了?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕久久 2023-05-29 10:20:01

同学你好,这里做了代码优化,把重复的代码做了抽离,从而复用重复代码。如果一个项目中,重复的代码特别多,那么这个项目就不是一个优秀的项目。咱们的项目,没优化之前,Backtop和Header这两个类,重复代码太多了,二者功能有相同的部分:

https://img1.sycdn.imooc.com//climg/64740a9009249fdb16500663.jpg

为了去除重复冗余的代码,可以将重复代码、功能抽离出来,比如我们将重复的代码抽离到了util中:

https://img1.sycdn.imooc.com//climg/64740b030972732613281054.jpg

然后在Backtop和Header这两个类中,引入公共部分就行了:

https://img1.sycdn.imooc.com//climg/64740b4c09bf28d209640570.jpg

就好比我们把各个页面公共的css代码提取到一个css文件中,然后在不同的页面中,直接使用link标签引入该css文件就可以使用公共样式了,不用再重复书写这部分css代码了。

祝学习愉快!

  • 提问者 慕芸芸 #1

    为什么在 backtop 中不用删,在 header 中就删了?

    2023-05-29 10:33:52
  • 好帮手慕久久 回复 提问者 慕芸芸 #2

    backtop中也可以删,估计是讲师遗漏了。比如:

    https://img1.sycdn.imooc.com//climg/6474112c091d6a1d11480686.jpg

    2023-05-29 10:42:55
  • 提问者 慕芸芸 回复 好帮手慕久久 #3

    this.scrollContainer不能删吧,this.scrollTo();有用到this.scrollContainer

    import './backtop.css';
    import 'icons/iconfont.css';
    import Scroll from 'utils/scroll';
    const CHANGE_CLASS_NAME='backtop-hidden';
    
    
    class Backtop{
        constructor(el,critical_point,scrollContainer,eventEl=scrollContainer){
            this.el=el;
            // 滚动条所在的容器
            this.scrollContainer=scrollContainer;
           
            new Scroll({
                critical_point,
                change:()=>{
                    this.show();
                },
                reset:()=>{
                    this.hide();
                }
            },scrollContainer,eventEl);
            this.bindEvent();
        }
       
        bindEvent(){
            this.el.addEventListener('click',()=>{
                this.scrollTo();
            },false)
        }
        scrollTo(top=0,left=0){
            this.scrollContainer.scrollTo({
                top,
                left,
                behavior:'smooth'
            })
        }
        // 显示
        show(){
            this.el.classList.remove(CHANGE_CLASS_NAME);
        }
        // 隐藏
        hide(){
            this.el.classList.add(CHANGE_CLASS_NAME);
        }
    }
    export default Backtop;


    2023-05-29 10:55:52
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师