bind()
bind()는 this 값을 고정시키는 명령!
bind() 안의 첫번째 인자는 this 를 고정시키고, 두번째 인자부터는 함수가 호출될때마다 사용된다.
sum이라는 함수에 this를 kim 으로 고정하는 새로운 함수(KimSum)가 만들어짐
// object 와 function 사이의 관계를 규명해보기 2
let kim = {name:'kim', first:10, second:20}
let lee = {name:'lee', first:10, second:10}
function sum(prefix){
return prefix +(this.first + this.second);
}
console.log('sum.call(kim)', sum.call(kim, '=>'));
console.log('sum.call(lee)', sum.call(lee, ': '));
let KimSum = sum.bind(kim, '-> '); // sum은 바뀌지 않고, ()안의 인자를 받은 새로운 KimSum가 만들어져서 리턴된 것!
console.log('KimSum()', KimSum());
// KimSum() -> 30
간단정리
call은 실행되는 함수의 this값을 원하는 객체로 바꿔서 실행할 수 있게 해준다.
bind는 실행되는 함수의 this값을 원하는 객체로 고정시키는 새로운 함수를 만들어낸다.
'Javascript' 카테고리의 다른 글
객체지향 프로그래밍: 클래스와 인스턴스 (0) | 2023.03.15 |
---|---|
배열 반복문 3인방 ( filter(), map(), reduce() ) (0) | 2023.03.14 |
call (=this 값을 바꾸는 명령) (0) | 2023.03.12 |
객체상속의 사용 (0) | 2023.03.12 |
Object.create() (= 명확한 상속관계 지정) (0) | 2023.03.12 |