美文网首页
简单案例来看JS中的面向对象

简单案例来看JS中的面向对象

作者: 千锋陈老师 | 来源:发表于2019-08-22 16:01 被阅读0次

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

相关文章

  • 简单案例来看JS中的面向对象

    在JS中,一般情况下我们都是直接写函数,直接调用,但是发现JS中也有new关键字,那么new关键字作为创建对象的关...

  • 面向对象OOP--JS

    作者:烨竹 JS面向对象简介 JS名言:万物皆对象 JS面向对象比PHP简单很多;因为JS中没有class关键字,...

  • JavaScript基础系列之——继承

    一、基本概念: JavaScript基于原型实现面向对象特性,在JS编程中,面向对象的继承是重点,本文将从简单...

  • JS面向对象精要(二)_函数

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(三)_理解对象

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(四)_构造函数和原型对象

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(五)_继承

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • 2018-01-18

    js中的面向对象核心 js是基于对象的编程语言,在后面的学习中我们通过一种模式使其转化成为面向对象的语言。js面向...

  • 浅谈JS中的面向对象

    浅谈JS中的面向对象 本文主要说说本人在JS中对面向对象的理解。 计算机编程语言主要分为面向过程式编程和面向对象式...

  • js基础知识面试题(二)

    《jquery的常见插件》 《jquery尺寸和位置》 《案例:动画返回顶部》 《js面向对象和面向过程》 《es...

网友评论

      本文标题:简单案例来看JS中的面向对象

      本文链接:https://www.haomeiwen.com/subject/klansctx.html