若有一個物件需要大量重複被使用時,可以使用class寫法
class Circle {
constructor(radius) {
this.radius = radius;
}
getArea() {
return Math.PI * this.radius * radius
}
}
let C1 = new Circle(5)
let C2 = new Circle(6)
console.log(C1.getArea()) // 78.53981633974483
console.log(C2.getArea()) // 113.09733552923255
用不同的寫法驗證速度,好的function可以減少時間及空間複雜度
// 1+2+3....+n = sum
function fn1(n) {
let sum = 0;
for (let i = 1; i <= n; i++) {
sum += i;
}
return sum;
}
function fn2(n) {
// 等差級數
return ((1 + n) * n) / 2;
}
let time1 = window.performance.now();
fn1(10000000);
let time2 = window.performance.now();
const timeDiff1 = (time2 - time1) / 1000;
console.log(`function1加總所花時間${timeDiff1}`);
let time3 = window.performance.now();
fn2(10000000);
let time4 = window.performance.now();
const timeDiff2 = (time4 - time3) / 1000;
console.log(`function2加總所花時間${timeDiff2}`); // function2的計算數度比function1快一倍
https://dosmanthus.medium.com/algorithm-big-o-notation-演算法的複雜度-762526316643
https://www.desmos.com/calculator?lang=zh-TW