티스토리 뷰

생활코딩/자바스크립트

함수호출

선물공룡디보 2021. 8. 18. 22:17

함수란?


함수는 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 메서드를 사용하지 않고 그냥 실행 시켜도 전역객체를 가리킨다.




'생활코딩 > 자바스크립트' 카테고리의 다른 글

argumnets  (0) 2021.08.18
클로저  (0) 2021.08.18
값으로서의 함수와 콜백  (0) 2021.08.18
유효범위  (0) 2021.08.17
객체  (3) 2021.08.15
댓글