JS #6 Syntax (6) - bind call apply, Promise 복습

황은하·2021년 9월 30일
0

JS

목록 보기
6/19

bind, call, apply

=> 상속 시 사용한다.

ex. 메소드.bind(객체)

class, constructor, object만 가능하다. 함수는 안된다.
(함수에 사용할 경우 undefined 발생.)

bind

: 변수에 저장해서 사용한다. 바로 함수가 실행되는게 아니다.
클래스 내의 메소드까지 접근이 가능하다. (상속되기 때문)
매개변수를 넣고싶다면 새로운 변수에 따로 넣어야 한다.


call

: 바로 실행시킨다. 변수에 저장하지 않는다. 뒤에 매개변수를 넣을 수 있다. (그냥 각각 넣기)


apply

: 바로 실행시킨다. 변수에 저장하지 않는다. 뒤에 매개변수를 넣을 수 있다. 단, 배열로 묶어서 넣어야 한다.


예제 코드

const person = {
  firstName: "nana",
  lastName: "Ffwang",
  getName() {
    console.log(this.firstName + this.lastName); 
  },
};

function registerUser() {
  console.log(this.firstName);
  console.log(this.lastName);
  this.getname();
}

// bind
let nana = registerUser.bind(person);
nana();

// call
registerUser.call(person);

// apply
let array = [1, 2, 3, 4, 5];
registerUser.apply(person, [...array]);

JS -> 객체지향 & 함수지향에 좋다 (둘 다 가능하기 때문)
class 내에 변수를 생성할 떄 #을 붙이면 private이다.

주의할 점

객체의 인스턴스를 만들어준 뒤에 bind, call, apply를 사용해야 한다.


Promise 복습

.map은 await이 안된다. => for 문을 사용하자. 그럼 된다.
Promise => 실패든 성공이든 어떻게든 답을 가져올게 (약속)

async await = Promise .then
=> 값을 받아올 때까지 기다려

Promise에서 reject()가 없다면 .catch()가 안된다.

Promise 객체가 반환된다고 하지만, .then(), .catch() 내의 매개변수로는 resolve(), reject() 안의 변수들이 전달된다.

profile
차근차근 하나씩

0개의 댓글