Novo curso! Todo programador deveria aprender IA generativa!
Experimente uma aula grƔtis+ 8
[Can'tBeSolved] Problem with .method() declaration using Es6 arrow syntax
I'm getting unexpected output when declaring a custom string method using ES6 Syntax. It is working expected when I use older method i.e. using function keyword, but not with arrow function. Cee my code to see problem. https://code.sololearn.com/W98vFyLcBVRv/?ref=app#js
12 Respostas
+ 5
Mirielle[ INACTIVE ] Actually, `this` keyword can be used in arrow functions.
Arrow functions do not create a new context for `this`. It will use the outer context. So if an arrow function is enclosed in a regular function, it's context is bound to the outer function's scope.
The following is appropriate:
https://code.sololearn.com/WuO2s2D1yvJX/?ref=app
+ 3
https://code.sololearn.com/csXo9FfFBfo9/?ref=app
+ 3
Good. You have spread enough misinformation already.
1. You cannot use the "this" keyword inside an arrow function
2. you cannot get the current object inside an arrow function with this
These are both wrong according to this code.
https://code.sololearn.com/WuO2s2D1yvJX
3. the prototype of an object from the OP's code referrs to the current object
The prototype is a property of the object that references another object on the heap. It does not refer to the current object.
a = {}
a !== a.prototype
4. the this keyword represented the object that called the function
I don't know what you mean by āobject that called the functionā but look at this code
https://code.sololearn.com/WC9AdODGWMkC
+ 2
Mirielle[ INACTIVE ] so Saadš
I was wondering since a long time why I am not being able to do this, finally got the reason.
Thanks for the answer.
+ 2
Mirielle[ INACTIVE ] A better way to express what you are saying is āarrow functions do not have their own contextā.
As I have proved earlier, `this` can be used in an arrow function.
Also,
this != current object
this = current context
+ 2
Well, I might have confused you by saying
this = current context
I should have said
this = a reference to the object that owns the current execution context
That is just a longer way of saying the same thing though.
If `this` is the current object, it is expected that `this` remains the same even when a function is bound to another object's context. That does not happen so `this` is not a reference to the current object.
The MDN link you shared explains it clearly.
"""
In most cases, the value ofĀ thisĀ is determined by how a function is called (runtime binding)... it may be different each time the function is called. ES5 introduced theĀ bind()Ā method toĀ set the value of a function'sĀ thisĀ regardless of how it's called, and ES2015 introducedĀ arrow functionsĀ which don't provide their ownĀ thisĀ binding (it retains theĀ thisĀ value of the enclosing lexical context).
"""
Is that not clear enough for you?
+ 1
Mirielle[ INACTIVE ]
I suggest read more about `this` from MDN. W3Schools is not a good learning site. David Carroll probably has more to say on that.
MDN defines `this` as
āA property of an execution context (global, function or eval) that, in nonāstrict mode, is always a reference to an object and in strict mode can be any value.ā
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this
See also:
https://www.freecodecamp.org/news/how-to-understand-the-keyword-this-and-context-in-javascript-cd624c6b74b8/
+ 1
Mirielle[ INACTIVE ]
`this` keyword is different for JavaScript. Partly because it existed way before JavaScript supported OOP.
In most languages, `this` refers to the object SCOPE. In JavaScript, `this` refers to the bound CONTEXT.
Context is the lexical environment a function is bound to. Scope is the current context of execution.
https://code.sololearn.com/WC9AdODGWMkC/?ref=app
+ 1
Ah cv NLLDJKFTKIglckv vl Torrescjkcklje Don't spam
0
String.bind(this);
0
MDN defines `this` as
āA property of an execution context (global, function or eval) that, in nonāstrict mode, is always a reference to an object and in strict mode can be any value.ā
I think that is consistent with what I have said all along.
In the section titled āArrow Functionsā, the following can be found:
"""
InĀ arrow functions,Ā thisĀ retains the value of the enclosing lexical context'sĀ this
"""
- 2
Salom