zoukankan      html  css  js  c++  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中创建对象的方式。

  • 相关阅读:
    【Eclipse】怎样把代码复制到word中并保持颜色
    windows下配置gvim
    这是给开发者的弥天大谎还是至理名言?
    Linux中常用软件安装(基于Ubuntu)
    MyEclipse 9.1优化技巧
    【数据库复习】函数依赖
    Windows下使用Flex入门
    【数据库复习】SQL
    浏览器中的“Linux”
    Unity开发原则
  • 原文地址:https://www.cnblogs.com/qfchen/p/11394883.html
Copyright © 2011-2022 走看看