麻烦老师解答 谢谢
来源: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、学习过程中遇到问题这都是正常现象,同学也不用太担心,对于是在理解不了的案例,可以先放放,一般是不会影响后续学习的。目前学习阶段,推荐跟着老师讲解的思路去敲写代码,先把老师讲解的内容完全掌握了,多练习思考,慢慢就会形成自己的变成思路,后续不管是实现什么案例,就会有自己的实现思路了。
祝学习愉快~
相似问题