Arrow Function And This Inside A Constructor Function
Solution 1:
Functions ->
No separate this
Until arrow functions, every new function defined its own this value (a new object in the case of a constructor, undefined in strict mode function calls, the base object if the function is called as an "object method", etc.). This proved to be less than ideal with an object-oriented style of programming
Read more about the new
keyword here
The constructor function ... is called with the specified arguments, and with
this
bound to the newly created object.
The bar() constructor defines this
as itself.
Solution 2:
Although I myself am far from good with objects (need to work on that), I think that when you do const test = new Test()
you initialize a new object. That way, the scope(?) of this
references only to the newly created object, thus why you do this.foo
and later on you reference to that foo property by using obj.foo
. On the other hand, when you just do const obj = { .... }
, you don't actually initialize a new object, so the this
goes straight to the global object - the window. So, const test = new Test
creates a new object, while using only const obj = {}
is not a new object and this
by default goes to the window object.
Post a Comment for "Arrow Function And This Inside A Constructor Function"