Using Constructors

Modern JavaScript Using Objects
11 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$99.99
List Price:  $139.99
You save:  $40
€94.67
List Price:  €132.55
You save:  €37.87
£79.13
List Price:  £110.78
You save:  £31.65
CA$140.19
List Price:  CA$196.27
You save:  CA$56.08
A$153.90
List Price:  A$215.47
You save:  A$61.56
S$133.95
List Price:  S$187.54
You save:  S$53.58
HK$778.23
List Price:  HK$1,089.55
You save:  HK$311.32
CHF 88.29
List Price:  CHF 123.61
You save:  CHF 35.31
NOK kr1,103.93
List Price:  NOK kr1,545.55
You save:  NOK kr441.61
DKK kr706.23
List Price:  DKK kr988.76
You save:  DKK kr282.52
NZ$169.87
List Price:  NZ$237.82
You save:  NZ$67.95
د.إ367.25
List Price:  د.إ514.17
You save:  د.إ146.91
৳11,891.45
List Price:  ৳16,648.51
You save:  ৳4,757.05
₹8,441.95
List Price:  ₹11,819.06
You save:  ₹3,377.11
RM447.25
List Price:  RM626.17
You save:  RM178.92
₦166,762.32
List Price:  ₦233,473.92
You save:  ₦66,711.60
₨27,643.94
List Price:  ₨38,702.63
You save:  ₨11,058.68
฿3,455.42
List Price:  ฿4,837.72
You save:  ฿1,382.30
₺3,458.79
List Price:  ₺4,842.45
You save:  ₺1,383.65
B$580.06
List Price:  B$812.10
You save:  B$232.04
R1,807.38
List Price:  R2,530.41
You save:  R723.02
Лв185.40
List Price:  Лв259.56
You save:  Лв74.16
₩139,431.41
List Price:  ₩195,209.55
You save:  ₩55,778.14
₪373.90
List Price:  ₪523.47
You save:  ₪149.57
₱5,890.51
List Price:  ₱8,246.95
You save:  ₱2,356.43
¥15,375.85
List Price:  ¥21,526.80
You save:  ¥6,150.95
MX$2,023.49
List Price:  MX$2,832.97
You save:  MX$809.47
QR362.91
List Price:  QR508.09
You save:  QR145.18
P1,357.62
List Price:  P1,900.72
You save:  P543.10
KSh12,923.70
List Price:  KSh18,093.70
You save:  KSh5,170
E£4,953.11
List Price:  E£6,934.55
You save:  E£1,981.44
ብር12,318.34
List Price:  ብር17,246.17
You save:  ብር4,927.83
Kz91,240.87
List Price:  Kz127,740.87
You save:  Kz36,500
CLP$97,196.23
List Price:  CLP$136,078.61
You save:  CLP$38,882.38
CN¥723.96
List Price:  CN¥1,013.58
You save:  CN¥289.61
RD$5,995.75
List Price:  RD$8,394.29
You save:  RD$2,398.54
DA13,338.53
List Price:  DA18,674.48
You save:  DA5,335.94
FJ$226.94
List Price:  FJ$317.73
You save:  FJ$90.78
Q768.81
List Price:  Q1,076.37
You save:  Q307.55
GY$20,819.01
List Price:  GY$29,147.45
You save:  GY$8,328.43
ISK kr13,756.62
List Price:  ISK kr19,259.82
You save:  ISK kr5,503.20
DH996.34
List Price:  DH1,394.91
You save:  DH398.57
L1,817.34
List Price:  L2,544.35
You save:  L727.01
ден5,825.76
List Price:  ден8,156.30
You save:  ден2,330.54
MOP$797.89
List Price:  MOP$1,117.08
You save:  MOP$319.18
N$1,802.21
List Price:  N$2,523.16
You save:  N$720.95
C$3,662.39
List Price:  C$5,127.50
You save:  C$1,465.10
रु13,434.94
List Price:  रु18,809.46
You save:  रु5,374.51
S/378.24
List Price:  S/529.55
You save:  S/151.31
K400.31
List Price:  K560.45
You save:  K160.14
SAR375.36
List Price:  SAR525.52
You save:  SAR150.16
ZK2,744.04
List Price:  ZK3,841.77
You save:  ZK1,097.72
L471.18
List Price:  L659.67
You save:  L188.49
Kč2,396.54
List Price:  Kč3,355.25
You save:  Kč958.71
Ft38,535.91
List Price:  Ft53,951.82
You save:  Ft15,415.90
SEK kr1,097.18
List Price:  SEK kr1,536.10
You save:  SEK kr438.91
ARS$99,841.85
List Price:  ARS$139,782.59
You save:  ARS$39,940.73
Bs687.64
List Price:  Bs962.72
You save:  Bs275.08
COP$442,190.80
List Price:  COP$619,084.81
You save:  COP$176,894.01
₡50,678.85
List Price:  ₡70,952.42
You save:  ₡20,273.57
L2,513.64
List Price:  L3,519.20
You save:  L1,005.56
₲775,611.66
List Price:  ₲1,085,887.35
You save:  ₲310,275.69
$U4,292.93
List Price:  $U6,010.28
You save:  $U1,717.34
zł409.79
List Price:  zł573.73
You save:  zł163.93
Already have an account? Log In

Transcript

So far, you've learned about prototypal inheritance, which is a very powerful concept. However, it is quite different than inheritance that is used by many programming languages out there, and therefore it is not widely understood. And because of that attempts have been made in JavaScript to make it a bit more like those other languages. And so we have constructs that are added to the JavaScript language to do that. Function constructors happened to fall in that category. Now we've looked at constructors in the past.

For example, to create an array you can use new array or to create a JavaScript object you can use new object. The fact that new is used indicates that the following function is a constructor function. So we're going to look at user defined constructor functions. So far, we've only looked at constructors that exist within the JavaScript language, but you can create those as well. Now, the function that is used for a constructor doesn't look any different than regular functions that we've already talked about as far as the syntax is concerned. It's really the use of new when you call that function that changes things that makes it different.

Now, unlike regular function calls, when a constructor function is called, it passes a brand new object as the value of this and then you can use that function that constructor function to initialize that brand new object with certain properties. And then that function implicitly returns that object. So we don't have to use the return keyword, it automatically returns it. This all happens because we use the new keyword, not because anything is different about the function. All right, let's look at a quick, simple example. And then we'll look at a more complex one.

So I'm going to open the console. And I already have entered a simple function declaration. The keyword function car in an inside of parentheses, I have one parameter, because we're going to pass in the color. And then we use the keyword this that we introduced in this section. And this refers to that blank objects that is created when we call this function using the new keyword. And so it sets a property of that object color is equal to the color that we pass in.

Now notice something that is a bit different. And that is the name of the function, I have used an uppercase letter for the first character in that name. And that's simply a convention that's used in JavaScript. This indicates that this is a constructor function, and should be called with the new keyword. And that's an important convention. Because if this function were called without the new keyword, this would point to the global object, it would not point to the new object.

And so it would cause things to happen that you don't want to happen obviously, it would set a property which we could otherwise refer to as a variable on the global object. And so that could cause some unintended results. So therefore, we use an uppercase letter at the start of the function name. Now, remember, That's not required. It's simply a convention to remind us that this is meant to be a constructor function. So let me go ahead and press return.

And now let's create a new object from this function constructor. So I do that using I'm going to assign it to a variable. And I do that using the keyword new new car. I'm going to pass in a color and I can create another one car to new car. pass in a color. So we have two objects objects there.

And we can look at those very simple object now much to it right now. Okay, same with car two. So another way to create an object using constructor function now How do we work with the prototype of these objects? Well as simply I can add to the prototype of the car function, notice I use the uppercase, and let's just say I want all of these objects to have a property of wheels and set that equal to four. Now if we look at car one, and we look at the prototype, wills is a part of that. So with car one, we can return wills.

And with car two, we can return Will's Okay, so that's a quick example of how to use a constructor function. Basically, you're accomplishing the same thing that we've done in the previous movies. It's just syntactically different. It uses the new keyword, which those coming from other languages are more used to Alright, let's look at a more complex example. Just to help solidify this whole constructor function idea, so I'm going to open sublime. And in this example, let's say I've created a program that has questions that we're asking of students.

And I want to keep track of those questions. And so I'm going to do that with objects. That's my my idea. And so first, I've set up a what is going to be a constructor function, use the function keyword. Notice that capital Q, and its name is question, and then we're passing in three arguments. The weight of the question, that's how much the question is worth, the correct answer, and the learners answer, and then we're setting those to that blank object.

And then I'm also setting one more property based upon things I've passed in That's whether the question is correct or not. And I simply set that by checking to see if the correct answer converted to uppercase is equal to the learners answer converted to uppercase. And if it is we set correct to true otherwise correct his faults. And then I've added a method to the prototype of this. So question dot prototype, and this is to get the score. And so I define the function with a conditional if this correct.

So if that equals true, then we return this dot Wait, how much the question is worth. Otherwise we return zero. All right, so I've set those up. Now I'm going to paste in some more code to allow us to work with these this constructor function. So let me copy that. I'll walk through that code as well.

Now, I'm declaring some variables. So I've set this up. And now we want to start using this object to track questions. So I'm declaring some variables. One is an array of questions, I want to keep track of the questions in an array. It's going to be an array of objects.

And then I'm going to have a variable for final score and a variable for possible score right now they're set to zero. So here's the results of the question as the learners gone through the program. And as they've answered questions, I've pushed to the questions array, a new question object. So I use the new keyword, create a question object, pass in the weight, pass in the correct answer, pass in the learners answer. And I've done that five times. Then when they're all done answering the questions, I have these last few bits of code.

First, we use a fork loop to go through the array. Notice I let i equals zero, i less than questions dot length, and then I increment i. And as I go through the array, I access each question object. And from the question object, I use the get score function which was assigned to the prototype. And that should return the weight of the question or a zero depending on whether they got right or wrong. And I add that to the final score.

And then I do the same thing with the possible score, but this time, I simply get the weight of the object. So the possible score will be all the weights added together, the final score will only be the weights for the questions that were correct. And then I log out. One more turn here so you can see it a little bit easier. I log out what the final score is out of the possible score. And I'm doing that because of the numbers.

Text I typed in, I'm doing that with a template string literal. Which is, of course, yes, six. All right, let me save that. Let's go ahead and open this up, copy the file path and see what it returns for us. Open the console. The score was three out of five.

Now I sent this results to the console. But obviously, if you were working with a learner, you'd want to send those results to the browser. And so you would manipulate the elements on HTML page to display that, which is the type of thing we're going to be covering in the next section. Alright, so score was three out of five. So that gives you another example of how to use objects and how to use the prototype of objects. But we did it within the context this syntactical context of constructor functions.

All right, let's move on to the next topic.

Sign Up

Share

Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.