深圳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中创建对象的方式。

发布了105 篇原创文章 · 获赞 16 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览