call & bind

지환·2024년 6월 6일
0

자바스크립트

목록 보기
11/30

call

var kim = {name : 'kim', first : 10, second : 20};
var lee = {name : 'lee', first : 10, second : 10};

//lee.__proto__ = kim;

function sum(){
    return this.first + this.second;
}
sum.call(); // sum이라는 객체를 실행시키는 것. == sum();
// sum.call(kim); > 여기서 this는 kim
console.log("sum.call(kim)", sum.call(kim));
console.log("sum.call(kim)", sum.call(lee));
---
PS C:\WorkSpace_Js> node object_function.js
sum.call(kim) 30
sum.call(kim) 20     
  
var kim = {name : 'kim', first : 10, second : 20};
var lee = {name : 'lee', first : 10, second : 10};

//lee.__proto__ = kim;

function sum(prefix){
    return prefix+(this.first + this.second);
}
sum.call(); // sum이라는 객체를 실행시키는 것. == sum();
// sum.call(kim); > 여기서 this는 kim
console.log("sum.call(kim)", sum.call(kim, '=> ')); // kim은 this값을 의미함. 그 다음 인자로 넘어가는게 => 이 값들을 의미함.
console.log("sum.call(kim)", sum.call(lee, ': '));

----


PS C:\WorkSpace_Js> node object_function.js
sum.call(kim) => 30
sum.call(kim) : 20  

bind

var kim = {name : 'kim', first : 10, second : 20};
var lee = {name : 'lee', first : 10, second : 10};

//lee.__proto__ = kim;

function sum(prefix){
    return prefix+(this.first + this.second);
}
sum.call(); // sum이라는 객체를 실행시키는 것. == sum();
// sum.call(kim); > 여기서 this는 kim
console.log("sum.call(kim)", sum.call(kim, '=> ')); // kim은 this값을 의미함. 그 다음 인자로 넘어가는게 => 이 값들을 의미함.
console.log("sum.call(kim)", sum.call(lee, ': '));


var kimSum = sum.bind(kim,'==>') 
// bind의 첫번쨰 인자는 "내부적으로 this를 뭐를 쓸꺼냐" 내부적으로 this를 kim으로 하는 새로운 함수가 만들어짐
// 두번째 파라미터 : 함수가 호출될때마다 사용 될 인자를 지정할 수 있음
// sum은 바뀌지 않음. sum에는 영향을 주지 않는다는 점이 중요함
// (===,===) 부분을 만족하는 sum를 리턴함.
console.log('kimsum()', kimSum());
profile
아는만큼보인다.

0개의 댓글