Explanation:
In ES6 class syntax, the special method used to initialize a new instance is called constructor.
A class definition syntax:
class ClassName {
constructor(param1, param2) {
this.prop1 = param1;
this.prop2 = param2;
}
}
The constructor method:
Is called automatically when you create a new instance with new ClassName(...).
Receives the arguments passed in the new expression.
Assigns values to this to set instance properties.
Applying this to Story
We want to be able to write:
const article = new Story('Some body', 'Author Name', 100);
and have:
article.body === 'Some body'
article.author === 'Author Name'
article.viewCount === 100
To achieve this, the class must have:
class Story {
constructor(body, author, viewCount) {
this.body = body;
this.author = author;
this.viewCount = viewCount;
}
}
So the correct line 02 is:
constructor(body, author, viewCount) {
Why the other options are incorrect
A . constructor() {
This defines a constructor with no parameters.
The lines inside the constructor use body, author, and viewCount, which would be undefined unless they exist in an outer scope (they normally do not).
This would lead to the instance properties being set to undefined in normal usage.
B . super(body, author, viewCount) {
super(...) is used inside a constructor of a subclass to call the parent class constructor.
You cannot use super(...) { as a method definition; this is invalid syntax in a class body.
Additionally, Story as given is not shown extending any class, so super is inappropriate here.
C . function Story(body, author, viewCount) {
Inside a class definition, you do not use the function keyword to define methods.
function Story(...) here would be invalid syntax in a class body.
Even if it were allowed, the special constructor method for a class is named constructor, not the class name.
Therefore, only:
constructor(body, author, viewCount) {
correctly declares the constructor for the Story class and ensures instances created with new Story(body, author, viewCount) have all three properties populated.
Reference / Study Guide concepts (no links):
ES6 class syntax
constructor method in classes
this and instance properties in classes
Difference between class constructors and regular functions
Invalid use of super and function inside class bodies