함수 호출
기본방법 예제
function func(){
}
func();

 

apply 예제
function sum(arg1, arg2){
 return arg1+arg2;
}
alert(sum.apply(null,[1,2]));

 

sum은 Function 객체의 인스턴스다. 그렇기 때문에 객체 function의 메소드 apply를 호출할 수 있다. apply 메소드는 두개의 인자를 가질 수 있는데, 첫번째 인자는 함수가 실행될 맥락이다.

 

//
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

 

우선 두개의 객체를 만들었다. o1는 3개의 속성을 가지고 있다. 각각의 이름은 val1, val2, val3이다. o2는 4개의 속성을 가지고 있고 o1과는 다른 속성 이름을 가지고 있고 속성의 수도 다르다.

그 다음엔 함수 sum을 만들었다. 이 함수는 객체의 속성을 열거할 때 사용하는 for in 문을 이용해서 객체 자신(this)의 값을 열거한 후에 각 속성의 값을 지역변수 _sum에 저장한 후에 이를 리턴하고 있다.

객체 Function의 메소드 apply의 첫번째 인자는 함수가 실행될 맥락이다. 이렇게 생각하자. sum.apply(o1)은 함수 sum을 객체 o1의 메소드로 만들고 sum을 호출한 후에 sum을 삭제한다.

 

//
function sum(){
    var _sum = 0;
    for(name in this){
  if(typeof this[name] !== 'function')
          _sum += this[name];
    }
    return _sum;
}
o1 = {val1:1, val2:2, val3:3, sum:sum}
o2 = {v1:10, v2:50, v3:100, v4:25, sum:sum}
alert(sum.apply(o1)) // 6
alert(sum.apply(o2)) // 185

'Programming > Javascript' 카테고리의 다른 글

전역객체와 this  (0) 2018.01.03
생성자와 new  (0) 2018.01.03
arguments, 매개변수의 수  (0) 2018.01.03
내부함수와 클로저  (0) 2018.01.03
값으로써의 함수와 콜백, 그리고 비동기 처리  (0) 2018.01.03
블로그 이미지

꼴통보안인

,