簡單案例來看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中創建對象的方式。

免責聲明:內容和圖片源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

IT行業、互聯網、開發語言(Java、前端HTML5、Python、UI/UE、雲計算、自動化測試、大數據、人工智能、物聯網、遊戲開發、網絡安全、GO語言、PHP)相關資訊,大連千鋒會第一時間送到大家身邊,也可以關注微信公衆號【dalianqianfengjiaoyu】瞭解相關行業資訊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章