色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript 復寫

趙雅婷1年前6瀏覽0評論

JavaScript中的復寫是在“子類”中重新定義“父類”中已經定義的函數或方法。在編寫代碼時,我們用子類的方法覆蓋了父類的方法,讓它執行特定的任務。

例如,讓我們考慮一個簡單的貓類:
class Cat {
constructor(name) {
this.name = name;
}
speak() {
console.log(this.name + ' makes a noise.');
}
}

我們現在創建了一個子類Persian,對父類中的方法進行了復寫:

class Persian extends Cat {
speak() {
console.log(this.name + '  meows.');
}
}

現在,當我們實例化Persian并調用方法時,將打印“Fluffy meows.”而不是“Fluffy makes a noise.”:

let fluffy = new Persian('Fluffy');
fluffy.speak(); // 輸出 "Fluffy meows."

我們也可以在復寫函數中訪問與父類相同方法的屬性和方法:

class Persian extends Cat {
speak() {
super.speak();
console.log(this.name + '  meows.');
}
}

上面的代碼將打印“Fluffy makes a noise.”和“Fluffy meows.”,因為super.speak()調用了父類的speak方法。

現在讓我們看一個現實世界的例子。假設我們要在我們的網站上顯示一個“實時”時鐘,該時鐘將在頁面上不斷更新。我們可以創建一個Clock類來管理時鐘的所有細節:

class Clock {
constructor(time) {
this.time = time;
}
update() {
this.time.setTime(this.time.getTime() + 1000);
this.printTime();
}
printTime() {
console.log(this.time.toLocaleTimeString());
}
}

現在,我們想要創建一個時鐘,該時鐘具有自己的update方法,以更新頁面上的時間:

class DigitalClock extends Clock {
constructor(time) {
super(time);
this.printTime();
setInterval(() =>this.update(), 1000);
}
printTime() {
let hours = this.time.getHours();
let minutes = this.time.getMinutes();
let seconds = this.time.getSeconds();
hours = hours< 10 ? '0' + hours : hours;
minutes = minutes< 10 ? '0' + minutes : minutes;
seconds = seconds< 10 ? '0' + seconds : seconds;
console.log(`${hours}:${minutes}:${seconds}`);
}
}

這里的DigitalClock類復寫了父類Clock中的printTime方法,以獲取與數字時鐘相適應的格式化時間。由于DigitalClock類有自己的update方法,我們可以使用setInterval函數來調用它,以每秒鐘更新一次時間。

JavaScript中的復寫是面向對象編程的一個強大且有用的概念。利用這個概念,我們可以創建具有我們想要的特定行為的自定義對象。