好程序员Java学习路线分享JS中的面向对象

  好程序员Java学习路线分享JS中的面向对象,在JS中,一般情况下我们都是直接写函数,直接调用,但是发现JS中也有new关键字,那么new关键字作为创建对象的关键字,给我们的感觉就是在JS中可以定义一个类,然后用new创建对象,那么在JS中如何做呢?我们先看如下案例,下面的案例是写一个简单的喷泉效果的。

window.onload = function(){
    // 创建一个画布对象
    var canvas = document.createElement("canvas");
    // 设置大小和颜色
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;
    canvas.style.backgroundColor = "#333333";
    // 将画布放置到body里
    document.body.appendChild(canvas);
    // 得到画笔
    var context = canvas.getContext("2d");
    // 定义一个存放所有粒子的数组
    var particles = [ ];
    
    // 调用显示粒子
    showParticle();
    
    // 创建并显示粒子的方法
    function showParticle(){
        // 循环操作
        setInterval(function(){
            // 清空画布
            context.clearRect(0,0,canvas.width, canvas.height);
            // 创建粒子
            var p = new Particle(canvas.width * 0.5, canvas.height * 0.5);
            // 将粒子装入存放粒子的数组
            particles.push(p);
            // 循环更新所有粒子的位置
            for (var i = 0;i<particles.length;i++) {
                // 更新位置
                particles[i].updateData();
            }
        }, 50);
    }
    
    function Particle(x, y){
        // 原坐标
        this.x = x;
        this.y = y;
        // 初始出现的改变的y的值
        this.yVal = -5;
        // 改变的x的值
        this.xVal = Math.random() * 8 - 4;
        // 定义一个下降的重力加速度
        this.g = 0.1;
        // 更新位置
        this.updateData = function(){
            // X值的变化
            this.x = this.x + this.xVal;
            // Y值的变化
            this.y = this.y + this.yVal;
            // 每次改变Y值速度的变化
            this.yVal = this.yVal + this.g;
            // 生成一个随机颜色
            context.fillStyle = "#" + Math.floor(Math.random() * 0xffffff).toString(16);
            // 将更新位置后的圆绘制出来
            this.draw();
        };
        
        // 绘图的方法
        this.draw = function(){
            // 开始画图
            context.beginPath();
            // 画圆
            context.arc(this.x, this.y,5,0,Math.PI * 2, false);
            // 结束画图
            context.closePath();
            // 填充
            context.fill();
        };
    }
};

在以上案例中,我们使用了new Particle来创建了一个对象,可以看到Particle其实也是一个function,那么它跟其他的function有啥区别呢?我们发现,里面定义的变量前面用了一个this关键字,定义的方法也用到了this关键字,这和Java中的this很相似,在上面的案例中,就可以使用new出来的变量来调用这些this后面的变量和函数,这就是一种在JS中创建对象的方式。
 

转载于:https://my.oschina.net/u/4177969/blog/3096756

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值