Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

JavaScript

JavaScript - Help me read and understand some of this code Please

https://gyazo.com/d21d15807de53f20732a01537a06350d

If the text gets reformatted, then the link above is a screen shot of the code. My questions: 1) the 'Person' was said to be a constructor. From what I understand, constructors instantiate an object--class / object literal with certain properties and behaviors. How is that a constructor because from what I know constructors are nested within a class. I'm not familiar with the syntax, can you point me to a resource on this ? 2) The for loop within the 'Person'. Can you point me to a resource explaining that syntax ' var key in data'. 3) For confirmation, the 'this' is referring to the instance of the Person object right ? I'm just bewildered by the syntax of the creation of the 'Person' and I don't know whether or not to treat it as an object or a class.

'use strict';

var Person = function (data) { for (var key in data) { this[key] = data[key];
} this.getKeys = function () { return Object.keys(this); } }

var Alena = new Person({ name: 'Alena', role: 'Teacher' });

console.log('Alena\'s Keys:', Alena.getKeys()); // 'this' refers to 'Alena'

var getKeys = Alena.getKeys;

console.log(getKeys()); // 'this' refers to the node process

1 Answer

Steven Parker
Steven Parker
216,148 Points

1. The class syntax where you have a method named "constructor" nested inside a class is a recent addition to JavaScript. The example shown here is the classic style where the constructor is created as a function that has the name of the class itself. This should be explained in the class you are taking.

2. The loop is a "for...in" type. Here's the MDN reference page for for...in.

3. The keyword "this" used in a constructor is a reference to the new object instance being created. There's a workshop here called Understanding "this" in JavaScript you may enjoy.

And "Person" in this example is a class (and also the name of the constructor function for that class). An example of an object would be "Alena".