forked from bloominstituteoftechnology/JavaScript-II-Mini
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclasses.js
More file actions
55 lines (46 loc) · 1.11 KB
/
classes.js
File metadata and controls
55 lines (46 loc) · 1.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
class Fruit {
constructor(options) {
this.type = options.type;
this.name = options.name;
this.isRipe = options.isRipe;
this.calories = options.calories;
}
ship(destination) {
console.log(`shipping ${this.name} to ${destination}`);
}
}
// raspberry -----------
class Raspberry extends Fruit { // connects prototype
constructor(options) {
super(options); // Fruit.call
this.doBearsLikeIt = options.doBearsLikeIt;
}
foo() {
console.log('foo!');
}
}
// pineapple -----------
class Pineapple extends Fruit {
constructor(options) {
super(options);
this.fromHawaii = options.fromHawaii;
}
}
// instantiation -----------
const myRaspberry = new Raspberry({
type: 'berry',
name: 'raspberry',
isRipe: true,
calories: 200,
doBearsLikeIt: true,
});
const myPineapple = new Pineapple({
type: 'bush thing',
name: 'pineapple',
isRipe: true,
calories: 1500,
fromHawaii: true,
});
myRaspberry.ship('Alaska');
myPineapple.ship('Arkansas');
myRaspberry.foo();