본문 바로가기
매일코딩/자바스크립트 개념

[생활코딩 함수] 함수 호출 5

by 인생여희 2017. 6. 5.
반응형

1.

<HTML>

<HEAD>

<TITLE> hamsoo</TITLE>

</HEAD>

<script>


//함수는 객체다

//함수 func는 function이라는 객체의 인스턴스다.

//따라서 func는 function이 가지고 있는 메소드들을 상속한다.

function func(){

}

func();




// 함수를 호출 하는 다른 방법

//함수 sum은 Function 객체의 인스턴스다. 그렇기 때문에 객체 Function의 메소드 apply를 호출 할수 있다. 

function sum(arg1, arg2){

    return arg1+arg2;

}

alert(sum.apply(null, [1,2]))


</script>

<BODY>


</BODY>

</HTML>




2.

<HTML>

<HEAD>

<TITLE> hamsoo</TITLE>

</HEAD>

<script>


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.apply(o1)은 함수 sum을 객체 o1의 메소드로 만들고 sum을 호출한 후에 sum을 삭제한다. 

//sum의 o1 소속의 메소드가 된다는 것은 이렇게 바꿔 말할 수 있다.

// 함수 sum에서 this의 값이 전역객체가 아니라 o1이 된다는 의미다.

// 일반적인 객체지향 언어에서는 하나의 객체에 소속된 함수는 그 객체의 소유물이 된다. 

//하지만 JavaScript에서 함수는 독립적인 객체로서 존재하고, apply나 call 메소드를 통해서 다른 객체의 소유물인 것처럼 실행할 수 있다. 


</script>

<BODY>


</BODY>

</HTML>




반응형

댓글