call()은 실행할때마다 어떤 객체의 this 값을 바꾸는 명령!
call()은 첫번째 인자로는 그 함수에 내부적으로 this를 뭘로 할지 오고,
두번째 인자부터는 호출하려는 함수에 인자값(parameter)이 들어오게 된다
// object 와 function 사이의 관계를 규명해보기 1
//서로 아무런 관련이 없는 두 객체를 만들었어요.
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); // 어떤 객체에도 속해있지 않은 함수
}
//sum 이라는 객체를 실행시키겠다!
console.log('sum.call(kim)', sum.call(kim, '=>')); // sum() 과 동일, 그럼 굳이 sum.call()하는 이유는? this = kim;이 성립하기 때문
//원래, sum()은 kim의 멤버가 아니였다.
//근데 참 특이한 call()메소드에 첫번째 인자로 'kim'을 넣어주었더니, this = kim 되고, sum이 kim의 멤버가 되었다.
//sum.call(kim) =>30
console.log('sum.call(lee)', sum.call(lee, ': '));
//this = lee;
//sum.call(lee) : 20
'Javascript' 카테고리의 다른 글
배열 반복문 3인방 ( filter(), map(), reduce() ) (0) | 2023.03.14 |
---|---|
bind(= this 값을 고정시키는 명령) (0) | 2023.03.12 |
객체상속의 사용 (0) | 2023.03.12 |
Object.create() (= 명확한 상속관계 지정) (0) | 2023.03.12 |
'__proto__' (=관습적으로 써온 상속관계) (0) | 2023.03.12 |