Welcome to the Linux Foundation Forum!

Key JavaScript Checks - Knowledge Center, Question 5.2



I'm following Chapter 5 Key JavaScript Concepts, and I just took the quiz at the end of the section.

I got the second question false.

The question is as follow:

What does the extend keyword do?

And the options are:
1. Inherits from an abstract class
2. Copies properties from one object to another
3. Sets up part of a prototype chain

I selected the first one, however, the correct result is the third option. I was in between the two, and could not decide, as both seem to express the same thing.

Can you explain why the first option is wrong, and third option is right?


  • caphsob

    Hi toramanomer - to answer your question with a question - does JavaScript have abstract classes? (Quite a nice answer here which I found useful: https://stackoverflow.com/questions/29480569/does-ecmascript-6-have-a-convention-for-abstract-classes/30560792)

    At first, I was a little confused as I've been using other languages where classes are more traditional, after reading the 'Class-Syntax Constructor' page it made sense for me.

    "Modern JavaScript (EcmaScript 2015) has a class keyword. It's important that this isn't confused with the class keyword in other Classical OOP languages... It actually creates prototype chains to provide Prototypal Inheritance as opposed to Classical Inheritance... This will setup the same prototype chain..."

  • davidmarkclements

    hey @toramanomer , @caphsob is exactly right, this question is deliberately worded this way to reinforce the point that class syntax in JS creates prototype chains, not classes in the typical/traditional (e.g. Java-esque) sense. It's an important distinction for people who have worked with other languages with class-syntax, the point being, even though it looks the same, it doesn't behave the same.


Upcoming Training