在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】瞭解相關行業資訊。