面向对象 红绿灯 案例

面向对象 点击实现红绿灯颜色切换

面向对象:定义不同类,让类的实例工作
优点:代码清晰,结构严密,更利于维护
使用场景:需要封装和复用性的场合,组件思维

案例: 点击红灯变黄,黄灯变绿,绿灯变红,如果页面有100个红绿灯,怎么做到互不影响?
案例   红绿灯

  • 面向对象编程,重要的是编写类
    (1) 定义类 TrafficLights()
  • 红绿灯有哪写属性方法?
    1.属性
    (1) 当前颜色 color
    (2) 属于自己的 dom
    2.方法
    (1) 初始化 init()
    (2) 切换颜色 colorChange()
    (3) 绑定事件 bindClick()
<div id="box"></div>
    // 定义类 TrafficLights
   function TrafficLights() {
        // 添加属性
        this.color = 1; // 红色1,黄色2,绿色3
        // 初始化
        this.init();
        // 监听
        this.bindClick();
   }
    // 初始化方法
   TrafficLights.prototype.init = function() {
    // 创建dom
       this.dom = document.createElement('img');
       // 设置src
       this.dom.src = 'images/' + this.color + '.jpg';
       // box追加 ‘appendchild’在指定元素节点的最后一个子节点之后添加节点。
       box.appendChild(this.dom);
   }
    //  绑定监听
    TrafficLights.prototype.bindClick = function() {
    // 备份上下文,self 指的是整个js实例。
    // 事件处理函数中,this是触发this.dom的这个元素本身,this不能指向它的实例
        var self = this; 
        // 当dom被点击时,触发函数
        this.dom.onclick = function() {
            self.colorChange();
        }
    }  
    // 改变颜色
    TrafficLights.prototype.colorChange = function() {
        this.color++;
        if(this.color === 4) {
            this.color = 1;
        }
        this.dom.src = 'images/' + this.color + '.jpg';
    }
    // 拿到盒子box
   var box = document.getElementById('box');
   // 实例
 	new TrafficLights(); // 1个红绿灯
   console.log(new TrafficLights()); // 打印new TrafficLights() 里边会有添加的属性color和dom
	
	var cont = 100; // 100个红绿灯
	while(cont--){
		new TrafficLights();
	}

打印new TrafficLights()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值