=> 상속 시 사용한다.
ex. 메소드.bind(객체)
class, constructor, object만 가능하다. 함수는 안된다.
(함수에 사용할 경우 undefined 발생.)
: 변수에 저장해서 사용한다. 바로 함수가 실행되는게 아니다.
클래스 내의 메소드까지 접근이 가능하다. (상속되기 때문)
매개변수를 넣고싶다면 새로운 변수에 따로 넣어야 한다.
: 바로 실행시킨다. 변수에 저장하지 않는다. 뒤에 매개변수를 넣을 수 있다. (그냥 각각 넣기)
: 바로 실행시킨다. 변수에 저장하지 않는다. 뒤에 매개변수를 넣을 수 있다. 단, 배열로 묶어서 넣어야 한다.
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를 사용해야 한다.
.map은 await이 안된다. => for 문을 사용하자. 그럼 된다.
Promise => 실패든 성공이든 어떻게든 답을 가져올게 (약속)
async await = Promise .then
=> 값을 받아올 때까지 기다려
Promise에서 reject()가 없다면 .catch()가 안된다.
Promise 객체가 반환된다고 하지만, .then(), .catch() 내의 매개변수로는 resolve(), reject() 안의 변수들이 전달된다.