Skip to content

Instantly share code, notes, and snippets.

@datduyng
Created June 13, 2020 19:59
Show Gist options
  • Select an option

  • Save datduyng/9aa8c3075b08e99cdf158736f6abeab0 to your computer and use it in GitHub Desktop.

Select an option

Save datduyng/9aa8c3075b08e99cdf158736f6abeab0 to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Class</h2>
<p>In this example we demonstrate a simple class definition and how to use it.</p>
<p id="demo"></p>
<script>
/*
Class - a convinient way to group information. group properties and method
List - a dynamic array
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
let list = [];
list.push('item1');
list.push('item2');
console.log(list); //['item1','item2']
Array - a static array
*/
class Car{
constructor(id,brand, fuelType, bodyType, price) {
this.id = id;
this.brand = brand;
this.fuelType = fuelType;//electric, gas, man-power
this.bodyType = bodyType;
this.price = price;
}
run(speed) {
console.log('runnning with speed ', speed);
}
}
//create a new Car Class
// let car = new Car('bmw', 'metal', 'metal', 200);
class ShopTouristInfo{
constructor() {
this.note = "no climbing";
}
}
class CarShop{
constructor(name, address, startAmount) {
this.name = name;
this.address = address;
this.revenue = startAmount;
this.numSold = 0;
this.carList = [];
this.touristInfo = new ShopTouristInfo();
}
sell(id, sellPrice){
//iterate through car list to check if car exist by id
let carIndex = -1;
for (let i=0; i<this.carList.length; i++) {
let car = this.carList[i];
if (id == car.id) {
carIndex = i;
break;
}
}
if (carIndex == -1) { //not found in carList
console.log ("Not found car with id", id);
return this;
} else { // found
// 2. increase revenue by price
this.revenue = this.revenue + sellPrice;
// 3. remove car from carList
this.carList.splice(carIndex, 1);
}
return this;
}
buy(car){
if (this.revenue - car.price < 0) {
console.log("Hey loser, you don't have enough money to buy ", car.brand);
return this;
}
this.carList.push(car);
this.revenue = this.revenue - car.price;
return this;
}
}
// run ShopBicycle
// User using ShopBicycle
let shop = new CarShop('Avenger', 'New york', 500);
//bmw, tesla, toyota
let bmw_i7_1 = new Car(1, 'bmw', 'gas', 'metal', 100);
let bmw_i3_1 = new Car(2, 'bmw', 'electric', 'chrome', 200);
let bmw_i3_2 = new Car(3, 'bmw', 'electric', 'chrome', 200);
let tesla_modelx_1 = new Car(4, 'tesla', 'electric', 'chrome', 200);
let tesla_model3_1 = new Car(5, 'tesla', 'man-power', 'rubber', 50);
let tesla_model3_2 = new Car(7, 'tesla', 'man-power', 'rubber', 50);
shop.buy(tesla_model3_1)
.buy(tesla_model3_2);
shop.buy(tesla_modelx_1);
shop.buy(bmw_i7_1);
shop.buy(bmw_i3_1);
shop.buy(bmw_i3_2);
shop.sell(4, 1000);
shop.sell(1, 500);
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment