👋 화살표 함수와 인스턴스, 화살표 함수 특징
1. 화살표 함수와 인스턴스
- 인스턴스에서 화살표 함수의
작성 위치에 따라this가 참조하는 오브젝트가 다름
1). prototype에 메소드로 작성
var point = 200;
// 생성자 함수
const Point = function () {
this.point = 100;
};
Point.prototype.getPoint = () => {
console.log(this.point);
};
// new 연산자로 인스턴스를 만든 후 getPoint() 메소드를 호출 합니다.
new Point().getPoint(); // 200prototype에 화살표 함수를 연결하면 함수 안에서this가 글로벌 오브젝트를 참조 함console.log(this.point)에서 글로벌 오브젝트의point값이 200을 출력
2). prototype의 메소드 안에 작성
const Point = function () {
this.point = 100;
};
Point.prototpe.getPoint = function () {
const add = () => this.point + 20;
console.log(add());
[1.2].forEach((value) => {
console.log(this.point + value);
});
};
new Point().getPoint();
// 120
// 101
// 102prototype에 일반 함수를 연결하고, 함수 안에 화살표 함수를 작성한 형태 임.getPoint()가 일반 함수 이므로this가 생성한 인스턴스 참조- 또한, 화살표 함수에서도
this가 생성한 인스턴스를 참조 함 - 화살표 함수의 스코프인
getPoint()의this를 사용하기 때문
2. 화살표 함수 특징
-
function대신=>를 사용, 함수 표현식 형태prototype이 없으므로 함수가 가벼움constructor가 없으므로new연산자로 인스턴스를 생성할 수 없음
-
화살표 함수에
this가 없음- 화살표 함수로
Function오브젝트를 생성할 때 - 정적으로 화살표 함수가 속한 스코프의
this를 화살표 함수에 바인딩 함 - 바인딩 된
this참조가 바뀌지 않으며 화살표 함수에서this로 사용 함 - 일반 함수는
call()등으로 바꿀 수 있음
- 화살표 함수로
- 메소드보다 함수로 사용하는 것이 효율 성이 높음