LEARNING JAVASCRIPT - Trang 135

1

It will either get bound to the global object or it will be

undefined

, depending on whether or not you are in

strict mode. We’re not covering all the details here because you should avoid this situation.

function doesn’t use

this

, we will generally refer to it as a function, no matter where

it’s declared.
One detail about the

this

variable that often trips people up is when you need to

access it in a nested function. Consider the following example, where we use a helper

function inside a method:

const

o

=

{

name

:

'Julie'

,

greetBackwards

:

function

() {

function

getReverseName

() {

let

nameBackwards

=

''

;

for

(

let

i

=

this

.

name

.

length

-

1

;

i

>=

0

;

i

--

) {

nameBackwards

+=

this

.

name

[

i

];

}

return

nameBackwards

;

}

return

`

${

getReverseName

()

}

si eman ym ,olleH`

;

},
};

o

.

greetBackwards

();

Here we’re using a nested function,

getReverseName

, to reverse the name. Unfortu‐

nately,

getReverseName

won’t work as we expect it to: when we call

o.greetBack

wards()

, JavaScript binds

this

as we expect. However, when we call

getReverseName

from inside

greetBackwards

,

this

will be bound to something else.

1

A common solu‐

tion to this problem is to assign a second variable to

this

:

const

o

=

{

name

:

'Julie'

,

greetBackwards

:

function

() {

const

self

=

this

;

function

getReverseName

() {

let

nameBackwards

=

''

;

for

(

let

i

=

self

.

name

.

length

-

1

;

i

>=

0

;

i

--

) {

nameBackwards

+=

self

.

name

[

i

];

}

return

nameBackwards

;

}

return

`

${

getReverseName

()

}

si eman ym ,olleH`

;

},
};

o

.

greetBackwards

();

The this Keyword | 111

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.