23
loading...
This website collects cookies to deliver better user experience
class
keyword followed by a capitalized class name and a pair of curly brackets as shown:class Animal {
}
new
keyword like so:class Animal {
}
let dog = new Animal();
dog
, an instance of our animal class. But... what exactly can we do with it? Well, what kind of specifications does every animal have? A name, species, and age. In order to add this information to our animal class, we must create a constructor like so:class Animal {
constructor(name, species, age) {
this.name = name;
this.species = species;
this.age == age;
}
}
let dog = new Animal("Spot", "Dog", 4);
class Animal {
constructor(name, species, age) {
this.name = name;
this.species = species;
this.age == age;
}
}
let dog = new Animal("Spot", "Dog", 4);
console.log(dog.name) //returns "Spot"
console.log(dog.species) //returns "Dog"
console.log(dog.age) //returns 4
class Animal {
constructor(name, species, age) {
this.name = name;
this.species = species;
this.age == age;
}
cutePet() {
return `Aww, your ${this.species} is so cute!`;
}
}
let dog = new Animal("Spot", "Dog", 4);
console.log(dog.cutePet()); //returns "Aww, your Dog is so cute!"
class Animal {...}
let dog = new Animal("Spot", "Dog", 4);
let bird = new Animal("Feathers", "Bird", 3);
let cat = new Animal("Mochi", "Cat", 2);
console.log(dog.cutePet()); //returns "Aww, your Dog is so cute!"
console.log(bird.cutePet()); //returns "Aww, your Bird is so cute!"
console.log(cat.cutePet()); //What does this return?
bird
and cat
like shown. Knowing what dog.cutePet()
and bird.cutePet()
return, what would calling cat.cutePet()
return? "Aww, your Cat is so cute!"
. It accesses the same method we defined in our Animal class, except it uses the data provided when initializing the cat
instance.public
and private
keywords, the latest version of JavaScript does it a little differently. JavaScript class properties are declared public by default, meaning that programmers only have to specify when declaring private properties. We can declare a private class variable by adding a #
to the front of every property declaration. When trying to access a private class property outside the class, JavaScript will return a [#variableName] out of scope
syntax error. Check out the MDN documentation on private class properties to learn more.get
keywordclass Animal {
constructor(name, species, age) {...}
get cutePet() {
return `Aww, your ${this.species} is so cute!`;
}
}
class Animal {...}
let dog = new Animal("Spot", "Dog", 4);
/**
console.log(dog.cutePet())
We no longer need these parentheses as it isn't
a function call anymore.
**/
console.log(dog.cutePet); //returns "Aww, your Dog is so cute!"
set
keywordclass Animal {
constructor(name, species, age) {...}
get cutePet() {...}
set animalName(name) {
this.name = name;
}
}
class Animal {...}
let dog = new Animal("Spot", "Dog", 4);
console.log(dog.name); //returns "Spot"
dog.animalName = "Fuzzy";
console.log(dog.name); //returns "Fuzzy"
set
keyword, we would instead have to invoke the function like this:class Animal {...}
let dog = new Animal("Spot", "Dog", 4);
console.log(dog.name); //returns "Spot"
dog.animalName("Fuzzy");
console.log(dog.name); //returns "Fuzzy"