好程序員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中創建對象的方式。

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