54 items
Prototype Clone Aliasing in Domain Aggregate
Code QuizDomain Modeling vs Pattern Trade-offs
QuizThe Four OOP Pillars
QuizModeling a Has-A Relationship
Code QuizModeling Relationships Between Classes
QuizModeling Problems With Classes
Slides / VideoModeling with Classes & Relationships
FlashcardInheritance and the super() Call
Code QuizComposition vs Inheritance Basics
QuizPatterns, Maintainability and Reusability
Slides / VideoWhen to Use Patterns (and When Not To)
Slides / VideoAnatomy of a Design Pattern
Slides / VideoWhat Are Design Principles
Slides / VideoThe Three Pattern Categories
Slides / VideoPatterns vs Principles vs Idioms
Slides / VideoOrigins of the Gang of Four
Slides / VideoWhy Design Patterns Matter
Slides / VideoWhat Is a Software Design Pattern
Slides / VideoComposition Over Inheritance
FlashcardThree Pattern Categories
FlashcardWhat Is a Design Pattern
FlashcardCohesion
FlashcardAbstraction
FlashcardOrigin: Gang of Four
FlashcardWhen to Use Patterns
FlashcardYAGNI Principle
FlashcardProgram to an Interface
FlashcardSOLID Overview
FlashcardDRY Principle
FlashcardEncapsulation
FlashcardPrinciple vs. Pattern
FlashcardCoupling
FlashcardWhy Design Patterns Matter
FlashcardKISS Principle
FlashcardSeparation of Concerns
FlashcardWhat Is an Anti-Pattern
FlashcardPatterns vs Architecture
QuizWhen to Apply Patterns
QuizInheritance Basics
QuizProgram to an Interface
QuizEncapsulation Basics
QuizReusability and Maintainability
QuizThree Pattern Categories
QuizOrigin of Design Patterns
QuizComposition Over Inheritance
QuizWhat Is a Design Pattern
QuizPatterns vs Principles
QuizPatterns vs Algorithms
QuizAnatomy of a Pattern
QuizCoupling and Cohesion
QuizWhat Is an Anti-Pattern
QuizWhy Use Design Patterns
QuizPolymorphism Basics
QuizAbstraction in Design
QuizInheritance and the super() Call
Spot the classic subclass constructor bug that breaks JavaScript inheritance.
class Animal {
constructor(name) {
this.name = name;
}
speak() {
return `${this.name} makes a sound`;
}
}
class Dog extends Animal {
constructor(name, breed) {
this.breed = breed;
super(name);
}
speak() {
return `${this.name} barks`;
}
}
const d = new Dog('Rex', 'Labrador');
console.log(d.speak());What is the bug in the Dog class, and how do you fix it?