inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

this 관련 문의드립니다.

해결된 질문

267

이승훈

작성한 질문수 49

0

 node.js 교과서로 공부중에 궁금한것이 있습니다.

화살표 함수는 본인의 대한 this를 갖지 않는다는것인데요. 때문에 화살표 함수가 없던 시절에 메서드 내부에 콜백함수 안에서 this를 사용해 매서드 외부의 객체(friends)를 참조하기 위해서 매서드 내부에서 this값을 가지는 변수를 선언하고 콜백함수에서 그값으로 참조를 하였죠. 

const relationship1 = {
    name: "zero",
    friends: ["nero", "hero", "xero"],
    logFriends: function () {
        const that = this; // this는 relationship1을 가리킨다.
        this.friends.forEach(function () {
            console.log(that.name, that.friends);
        });
    },
};

relationship1.logFriends();

 그리고 화살표 함수가 생긴 이후로는 이런코드를 작성하구요.

const relationship2 = {
    name: "zero",
    friends: ["nero", "hero", "xero"],
    logFriends() {
        this.friends.forEach(() => {
            console.log(this.name, this.friends);
        });
    },
};

relationship2.logFriends();

 그런데 궁금한것이 logFriends역시 함수인데 logFriends는 화살표 함수를 쓰지 않아도 this.friends로 메서드 외부에 friends에 접근 할 수 있다는 것이 신기하네요. 그래서 제가 함수 프로퍼티를 화살표함수로 만드는 시도를 했습니다.

const relationship3 = {
    name: "zero",
    friends: ["nero", "hero", "xero"],
    logFriends: () => {
        console.log(this.friends);
    },
};

relationship3.logFriends();

 하지만 이렇게 하면 undefined가 출력되더군요. 두번째 코드의 logFriends가 함수 프로퍼티라 가능한건가요??

mysql mongodb nodejs Sequelize

답변 1

0

제로초(조현영)

원래 객체 내부의 메서드에서 this는 객체 자신을 가리킵니다. 메서드가 화살표함수가 되면 그게 깨지는 것이고요.

다만 호출할 때 반드시 객체.메서드()꼴로 호출해야 합니다. 

0

이승훈

감사합니다!

리눅스 노드 설치시 패키지

0

172

0

socket.js 에서 referer로부터 roomId를 가져올 때

0

926

3

스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문

0

2297

2

a[title] 질문드립니다

0

386

1

리뉴얼 강의 및 공부 방법

0

589

1

jwt decode

0

1137

1

node.js 교과서 3판 질문드립니다

0

396

1

passport와 jwt

0

438

1

리뉴얼 강의

0

428

2

혹시 Node.js 교과서 3판 이북은 언제 나오나요?

0

359

1

몽고디비 사용자도 MYSQL부분을 들어야 하나요???

0

488

1

sql 쿼리 로그는 어떤 모듈이 작성하나요?

0

511

2

nunjucks res.render('error'); 작동을 안합니다.

0

518

1

질문있습니다.

0

348

1

multer 한글 파일 업로드시 파일명이 깨져요.

1

3543

1

수업자료는 어디있나요?

0

374

1

질문 있습니디

0

244

1

multer 사용시 file 외 name값은 못받나용?

0

429

1

코드 중복 부분 질문드립니다.

0

303

1

api 만드는 이유 질문드립니다.

0

292

1

Strategy의 done에 대해 질문드립니다.

0

373

1

안녕하세요 fs 권한 관련 질문드립니다

0

456

1

시퀄라이즈 연결질문...

0

510

2

res.setHeader vs res.cookie

0

1797

3