麻烦老师解答 谢谢

来源:6-2 上升到面向对象-炫彩小球小案例

dww1

2022-04-05 12:04:30

ballArr.push(this);
Ball.prototype.init=function(){
            //创建自己的dom
            this.dom=document.createElement('div');
            this.dom.className='ball';
            this.dom.style.width=this.r*2+'px';
            this.dom.style.height=this.r*2+'px';
            this.dom.style.left=this.x-this.r+'px';
            this.dom.style.top=this.y-this.r+'px';
            this.dom.style.backgroundColor=this.color;
            //上树
            document.body.appendChild(this.dom);
        };

this 和this dom的区别是什么 ?this指的是new 出来的实例  也就是 设置鼠标指针的this          new Ball(x,y);吗,this dom 又是什么 什么时候才能知道我们要设置的dom是哪个

document.onmousemove=function(e){
            //得到指针的位置
            var x=e.clientX;
            var y=e.clientY;
            new Ball(x,y);
        };

2

//当透明度小于0的时候,就需要从数组中删除自己,DOM元素也要删除自己
            if(this.opacity<0){
                //从数组中删除自己
                for(var i=0;i<ballArr.length;i++){
                    if(ballArr[i]==this){
                        ballArr.splice(i,1);
                    }
                }
                //还要删除自己的dom
                document.body.removeChild(this.dom);
            }

看视频的时候想了透明度如果为0 的时候 该怎么办 但是既然知道了有小于0的 为什么还要添加for循环 而不是直接删除掉this就行了 还有为什么也要删除dom

3

就是课程的内容 只要涉及到做效果 就只能跟着老师敲 敲完之后自己理解  但是有些还是很难理解 提问后自己敲还是有很多问题 会不会影响后面课程的学习 像这种情况能不能把案例先放一放 

写回答

1回答

好帮手慕慕子

2022-04-06

同学你好,对于你的问题解答如下:

1、两者的区别如下:

(1)this表示的是Ball实例化对象

(2)this.dom 表示的是添加到this上的一个属性,名为dom(该名称可以自定义),用来表示自己创建的一个div元素

由于document.createElement('div')这句代码在init方法中,所以在调用init方法时,就会创建一个div元素,并设置对应的样式。

每实例化一次,就会创建一个div元素,并针对当前创建的div设置样式。

2、因为将对应的小球都添加到数组中了,虽然知道了当前this上的opacity小于0,但是无法直接删除this,所以通过遍历获取到数组中该项小球的索引,再通过索引删除该项元素。

如果不删除DOM的话,页面程序会变得异常的卡顿,这个效果目前仅在空网页上跑,如果以后页面中模块多了,那么浏览器引擎是带不动的,所以推荐删除掉

3、学习过程中遇到问题这都是正常现象,同学也不用太担心,对于是在理解不了的案例,可以先放放,一般是不会影响后续学习的。目前学习阶段,推荐跟着老师讲解的思路去敲写代码,先把老师讲解的内容完全掌握了,多练习思考,慢慢就会形成自己的变成思路,后续不管是实现什么案例,就会有自己的实现思路了。

祝学习愉快~

0

0 学习 · 15276 问题

查看课程