请选择 进入手机版 | 继续访问电脑版

好程序员-千锋教育旗下高端IT职业教育品牌

400-811-9990
我的账户
好程序员

专注高端IT职业培训

亲爱的猿猿,欢迎!

已有账号,请

如尚未注册?

[JavaEE] 好程序员Java培训分享JS中的面向对象

[复制链接]
叶子老师 发表于 2019-8-23 14:55:31 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
本帖最后由 叶子老师 于 2019-8-23 14:57 编辑

  好程序员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.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中创建对象的方式。
精彩内容,一键分享给更多人!
回复

使用道具 举报

您需要登录后才可以回帖

本版积分规则

关注我们
好程序员
千锋好程序员

北京校区(总部):北京市海淀区宝盛北里西区28号中关村智诚科创大厦

深圳西部硅谷校区:深圳市宝安区宝安大道5010号深圳西部硅谷B座A区605-619

杭州龙驰智慧谷校区:浙江省杭州市下沙经济技术开发区元成路199号龙驰智慧谷B座7层

郑州校区:郑州市二七区航海中路60号海为科技园C区10层、12层

Copyright 2007-2019 北京千锋互联科技有限公司 .All Right

京ICP备12003911号-5 京公安网11010802011455号

请您保持通讯畅通1对1咨询马上开启