티스토리 뷰
함수란?
함수는 Function 이라는 객체의 인스턴스이다.
따라서 함수는 객체 Function이 가지고 있는 메소드들을 상속하고 있다.
함수 예제
function sum(arg1, arg2){
return arg1+arg2;
}
alert(sum.apply(null, [1,2])) //3
함수 sum은 Function 객체의 인스턴스다. 그렇기 때문에 Function 의 메소드 apply를 호출 할 수 있다.
apply 메소드는 두개의 인자를 가질 수 있는데, 첫번째 인자는 함수(sum)가 실행될 컨텍스트이고, 두번짜 인자는 sum 함수의 파라미터에 대입할 값이다.
함수 메서드
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){
_sum += this[name];
}
return _sum;
}
alert(sum.apply(o1)) // 6
alert(sum.apply(o2)) // 185
// sum 이 o1 의 메서드가 된다는 것은 함수 sum에서 전역객체가 아니라 o1이 된다는 뜻이다.
o1.sum = sum;
alert(o1.sum());
delete o1.sum();
.apply 메서드를 이용하여 this 를 o1 , o2 객체로 변환하여 객체를 순환하는 예제이다.
만약 apply의 첫번째 인자로 null을 전달하면 apply가 실행된 함수 인스턴스는 전역객체를 가리킨다.
그리고 만약 apply 메서드를 사용하지 않고 그냥 실행 시켜도 전역객체를 가리킨다.
댓글