好程序员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://yq.aliyun.com/articles/715629

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。