Defining the Prototype with Object.create

Modern JavaScript Using Objects
9 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
€93.80
List Price:  €131.33
You save:  €37.52
£80.29
List Price:  £112.41
You save:  £32.12
CA$137.56
List Price:  CA$192.59
You save:  CA$55.03
A$155.72
List Price:  A$218.02
You save:  A$62.29
S$136.13
List Price:  S$190.59
You save:  S$54.46
HK$783.15
List Price:  HK$1,096.44
You save:  HK$313.29
CHF 90.82
List Price:  CHF 127.16
You save:  CHF 36.33
NOK kr1,103.56
List Price:  NOK kr1,545.03
You save:  NOK kr441.46
DKK kr700
List Price:  DKK kr980.03
You save:  DKK kr280.02
NZ$169.65
List Price:  NZ$237.52
You save:  NZ$67.86
د.إ367.23
List Price:  د.إ514.13
You save:  د.إ146.90
৳10,973.26
List Price:  ৳15,363.01
You save:  ৳4,389.74
₹8,346.81
List Price:  ₹11,685.87
You save:  ₹3,339.05
RM478.30
List Price:  RM669.64
You save:  RM191.34
₦129,687.03
List Price:  ₦181,567.03
You save:  ₦51,880
₨27,846.09
List Price:  ₨38,985.64
You save:  ₨11,139.55
฿3,684.97
List Price:  ฿5,159.11
You save:  ฿1,474.13
₺3,259.29
List Price:  ₺4,563.14
You save:  ₺1,303.85
B$524.14
List Price:  B$733.82
You save:  B$209.68
R1,920
List Price:  R2,688.08
You save:  R768.07
Лв183.64
List Price:  Лв257.10
You save:  Лв73.46
₩138,024.19
List Price:  ₩193,239.39
You save:  ₩55,215.20
₪378.55
List Price:  ₪529.99
You save:  ₪151.43
₱5,756.02
List Price:  ₱8,058.66
You save:  ₱2,302.64
¥15,447.20
List Price:  ¥21,626.70
You save:  ¥6,179.50
MX$1,726.94
List Price:  MX$2,417.79
You save:  MX$690.84
QR366.07
List Price:  QR512.51
You save:  QR146.44
P1,385.95
List Price:  P1,940.39
You save:  P554.43
KSh13,348.66
List Price:  KSh18,688.66
You save:  KSh5,340
E£4,832.56
List Price:  E£6,765.78
You save:  E£1,933.22
ብር5,710.80
List Price:  ብር7,995.35
You save:  ብር2,284.55
Kz83,585.80
List Price:  Kz117,023.47
You save:  Kz33,437.66
CLP$96,622.33
List Price:  CLP$135,275.13
You save:  CLP$38,652.80
CN¥724.04
List Price:  CN¥1,013.69
You save:  CN¥289.64
RD$5,929.75
List Price:  RD$8,301.89
You save:  RD$2,372.13
DA13,457.15
List Price:  DA18,840.55
You save:  DA5,383.40
FJ$227.57
List Price:  FJ$318.61
You save:  FJ$91.03
Q780.47
List Price:  Q1,092.69
You save:  Q312.22
GY$20,930.40
List Price:  GY$29,303.40
You save:  GY$8,372.99
ISK kr14,100.58
List Price:  ISK kr19,741.38
You save:  ISK kr5,640.80
DH1,016.63
List Price:  DH1,423.32
You save:  DH406.69
L1,790.82
List Price:  L2,507.22
You save:  L716.40
ден5,785.11
List Price:  ден8,099.38
You save:  ден2,314.27
MOP$806.50
List Price:  MOP$1,129.14
You save:  MOP$322.63
N$1,910.91
List Price:  N$2,675.35
You save:  N$764.44
C$3,692.82
List Price:  C$5,170.09
You save:  C$1,477.27
रु13,360.74
List Price:  रु18,705.58
You save:  रु5,344.83
S/376.13
List Price:  S/526.61
You save:  S/150.47
K381.31
List Price:  K533.85
You save:  K152.54
SAR375.08
List Price:  SAR525.14
You save:  SAR150.05
ZK2,557.08
List Price:  ZK3,580.02
You save:  ZK1,022.93
L466.85
List Price:  L653.61
You save:  L186.76
Kč2,369.96
List Price:  Kč3,318.04
You save:  Kč948.08
Ft37,031.68
List Price:  Ft51,845.84
You save:  Ft14,814.15
SEK kr1,094.85
List Price:  SEK kr1,532.83
You save:  SEK kr437.98
ARS$86,967.11
List Price:  ARS$121,757.44
You save:  ARS$34,790.32
Bs693.40
List Price:  Bs970.79
You save:  Bs277.38
COP$389,858.15
List Price:  COP$545,817.01
You save:  COP$155,958.85
₡50,274.61
List Price:  ₡70,386.47
You save:  ₡20,111.85
L2,477.26
List Price:  L3,468.26
You save:  L991
₲742,412.64
List Price:  ₲1,039,407.40
You save:  ₲296,994.75
$U3,872.48
List Price:  $U5,421.62
You save:  $U1,549.14
zł405.79
List Price:  zł568.12
You save:  zł162.33
Already have an account? Log In

Transcript

The concept of the prototype is a powerful idea in JavaScript, it expands what we're able to do with objects. And since JavaScript is made up of objects, it expands what we can do with JavaScript. As mentioned in the previous movie, we can specify a prototype for objects we're creating. We do that with object create. And I'll show you that in just a minute. But not only can we specify the prototype, we can modify or add to the prototype for objects that already exist.

And when we modify or add to that prototype, it affects all the objects that use or inherit from that prototype. So I'm going to show you an example of that first, and then we'll use the object create to define Our own prototype for a couple of objects. So let me open the console. And I'm going to create an array set at eat pool two, we'll just have three numbers in the array. I now have my array. Now what if I wanted to do a method to an array that simply says hi.

Well, obviously the Say hi method does not exist for arrays right now. However, I can change that. I can change that for as long as this code is available in the JavaScript engine, which in this case, is the browser window. So until this HTML page closes, or the browser window closes, I can make a function available for all of these arrays. And I do that by typing array dot prototype dot. Now I define the new property.

And it's a function. So I set it equal to function keyword, parentheses, and then in curly braces the code that will execute. Now I press return. Now arrays have a new method associated with them. So the array I created previously. Now if I do say hi, it comes back and says hi, it doesn't give me an error then say uncaught type error, because now it is defined.

So very powerful idea there. All right, let me clear this. Now let's use the object dot create to define our own prototype. So here's an example we have. We're going to create a company object The company object has the name of the company. And then it also has a function full name.

And all that function does is it returns the first name and the last name concatenated together. So I'm gonna go ahead and create that object. Now, I have several employee objects I want to create, and I want the prototype of those employee objects to be this company object I just created so that I don't have to repeat that information for every single object. So company name is available in each of them. And the full name method is available in each of them. So how would I go about doing that?

So employee one, here's one way equals object create. So I set up my variable, and then I set it equal to object dot create, and then I pass into object create the object that I want to use as the prototype. I press return. So what it does Let's look at employee one now. It creates an empty object. But the prototype of that empty object is the company object because here's company name, and here's the full name function.

All right, pretty cool. Now I can add to that object I've created. I can add additional properties. There's first name. There's last name. Now, we should be able to use the full name method.

And sure enough that concatenates them both together. So that's one way to create an object while you're defining its prototype. Is you first create the empty, empty object using object dot create. And then you add the additional properties you want to the object itself. Well We can also add those properties at the same time we're creating the object using object job object dot create. And let's look at how we would do that.

We'll do that with our second employee. So employee two equals dot create, and then we pass in company, right? Then we have a comma. Now the second argument for object dot create are the properties that I want to add to this new object. Now, it's not as simple as doing object literal notation. Here's how it works.

So we enter our curly braces. Oops, we enter our curly braces. We got to finish the statement before I press return and then we specify The property, the name of that name value pair. But then we have to put curly braces again and inside of there, we define certain things about that property, one of which is the value. And that's what we're going. That's the only part we'll do at this point is we'll simply define the value, we put it a closing curly braces to that, put a comma.

And we do the next line, I'm going to a new line in the console by pressing Shift Enter. That allows me to go to a new line without causing it to execute. Last name, we're also going to add a value there. And let's make that smart as well. Then, close the curly braces. Close the parentheses.

So here's what we have variables. Employee two is equal to object dot create, we pass in the company that will be the prototype, that's the object that will now be the prototype. And now we define some additional properties for that object. And we have to enclose all of that within curly braces. But for each property we define there are certain characteristics we define about that property that is that are enclosed within curly braces, one of which is the value there are also other things as well, which won't deal with it this time, but the value is obviously an important part of that definition. Now we press return.

Now employee two should be defined. And it has a first name as the last name. The prototype object is the company object. So I can execute full name with employee two as well. So in review, we've looked at three different ways to create objects the object literal. The object constructor, which is done using the new keyword.

And now we've used object create the first to accomplish the same thing. The prototype of objects created with object literal, or the object constructor is object dot prototype. With object dot create, we can specify what the prototype is, that prototype becomes the object we pass in. Now, you may wonder, well, what's the prototype of that prototype? Well, that would be object dot prototype in the case we've used here because when I created company clear up here, I did as an object literal. So its prototype would be object dot prototype.

So when I used it as the prototype for the employees, it became their prototype. And so the prototype chain would be the company object and then object dot prototype. So those are the three ways to create objects. We have another concept to deal with in the object section and that has to do with constructors. So let's move on to the next movie.

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.