본문 바로가기

UI개발

자바스크립트 함수지향 - 함수의 호출

함수의 호출

함수 호출은 자바스크립트의 유연함을 잘보여주는 사례

 

기본적인 방법

function func(){

}

func();

 

함수 = 일종의 객체

객체는 속성을 가지고 있다. 

속성이 값이면 프로퍼티, 함수면 메소드라고 한다.

 

함수(객체)는 apply와 call 메소드(속성)의 접근할 수 있다.

apply와 call은 같은 취지이지만 사용방법이 다르다.

 

apply 사용

function sum(arg1, arg2){
    return arg1+arg2;
}

sum(1,2); // 3

// sum.apply = apply는 sum이라고 하는 함수 객체에 담긴 메소드. native code(내장객체)
sum.apply(null,[1,2]);
sum.apply(null,[4,2]);

 

    결과 : 3, 6

 

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){
        _sum += this[name];
    }
    return _sum
}

alert(sum.apply(o1)) // this = o1
alert(sum.apply(o2)) // this = o2

// sum을 호출할 때 실행하는 대상은 o1, o2 객체의 값들이다.

 

    결과 : 6, 185

 

위 코드를 풀어서 쓰면 아래와 같다.

function sum(){
    var _sum = 0;
    for(name in this){
        if(typeof this[name] !== "function"){ // type이 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(o1.sum())
alert(o2.sum())

 

 

 

 

'UI개발' 카테고리의 다른 글

BOM (Browser Object Model)  (0) 2016.07.27
Object Model  (0) 2016.07.26
자바스크립트 함수지향 - argument  (0) 2016.05.17
자바스크립트 함수지향 - 유효범위 (Scope)  (0) 2016.05.15
alt와 title  (0) 2016.05.05