함수라는것은 일종의 객체야
function sum(arg1, arg2)
{
return arg1 + arg2;
}
sum(1,2) // 일반적인 함수호출
sum.apply; // function apply() { [native code] } // 내장된 코드인경우 네이티브코드라는거임..
sum.apply(null, [1,2]); // 3이 나옴
sum.apply(null, [3,5]); // 8이 나옴
// sum의 인자를 배열로 패키징해서 apply의 두번째 인자에 전달.
// sum이라는 함수가 가지고있는 내장함수 apply를 이용..도대체 왜??
apply를 사용하는이유? 첫번째 인자 null이 아니라 다른걸 넣으면 어케되는지 봐야해
o1 = {val1:1, val2:2, val3:3}
o2 = {v1:10, v2:50, v3:100, v4:25}
function sum()
{
var _sum = 0;
for (name in this) // 여기서 this는 sum이 호출될때마다 바뀜. sum.apply를 하게되면 sum이 호출되는데 o1이라는 객체를 apply인자로 주게되면 o1이 sum이라는 함수의 this가 됨.
{
_sum += this[name];
}
return _sum;
}
alert(sum.apply(o1)) // 6
alert(sum.apply(o2)) // 185