Tell us what’s happening:
Your code so far
I’m getting error in the code below:
1 let dog = {
2 name: "Spot",
3 numLegs: 4,
4 sayLegs: () => { return "This dog has " + this.numLegs + " legs.";}
5 };
6
7 dog.sayLegs();
Why line no. 4 is not working the same as:
4 sayLegs = function() { return 'This dog has ' + this.numLegs + ' legs.';}
Challenge: Make Code More Reusable with the this Keyword
Link to the challenge:
look carefully at the punctuation in the sayLegs function
Hi @sam_12-56,
Compare your code to the sample code 's duck object.
Hint: Note that when using arrow functions, this
is bound using the enclosing scope where the arrow function is defined.
1 Like
Sorry,
line no.7 (second time) should be:
4 sayLegs: () { return 'This dog has ' + this.numLegs + ' legs.';}
‘=’ should be replaced by ‘:’ .
That means ‘this’ represents the arrow function (sayLegs) and not the dog object.
Thanks brother!
1 Like
Not exactly. Try the following exercise
let dog = {
name: "Spot",
numLegs: 4,
whatsArrowThis: () => console.log(this),
whatsFuncThis: function () { console.log(this) }
};
dog.whatsArrowThis();
dog.whatsFuncThis();
Compare what was logged from both calls. Think about why that is, keeping in mind what I said previously about how this
is bound.
That should hopefully solidify within your mind the difference in how this
is bound by the different function definition styles.
It also a good idea to deep dive on this topic as much as you can to fully understand it.