Function.prototype.call은
구문 : func.call(thisArg[, arg1[, arg2[, ...]]])
**`thisArg` :** `*func*` 호출에 제공되는 `this`의 값
설명 : call()은 이미 할당되어있는 다른 객체의 함수/메소드를 호출하는 해당 객체에 재할당할때
사용됩니다. this는 현재 객체(호출하는 객체)를 참조합니다. 메소드를 한번 작성하면
새 객체를 위한 메소드를 재작성할 필요 없이 call()을 이용해 다른 객체에 상속할 수 있습니다.
//익명 함수 호출에 call 사용
var animals = [
{ species: 'Lion', name: 'King' },
{ species: 'Whale', name: 'Fail' }
];
for (var i = 0; i < animals.length; i++) {
// 여기서 function을 ()로 묶는 이유가 머야?? 먼저 실행할려고 하나 그것도 아닌데
(function(i) {
this.print = function() {
console.log('#' + i + ' ' + this.species
+ ': ' + this.name);
}
this.print();
}).call(animals[i], i);
}
call 사용아래 예제에서, display 함수에 첫번째 인수를 전달하지 않고 호출합니다. 첫번째 인수를 전달하지 않으면, this의 값은 전역 객체에 바인딩됩니다.
→ 지역객체로 선언이 되어있으면 못찾음