본문 바로가기

JAVASCRIPT

함수 호출

함수는 객체입니다. 객체는 속성을 가지고 있습니다. 값이 저장되있으면 속성 프로퍼티라고 합니다.

그 속성에 함수가 들어있으면 메소드라고 합니다. 메소드는 자바스크립트가 내장된 객체입니다. 

 

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

sum(1,2);

이면 3

 

sum(4,2)

6

 

다르게 호출하는 방법을 알려드립니다.

 

sum.apply 입력하면

ƒ apply() { [native code] }

 

sum이라는 함수객체의 apply메소드에 접근합니다.

 

{ [native code] } 이뜻은 apply라는 메소드가 브라우저에서 제공하는 메소드이기때문에 코드를 보여줄수 없습니다.

내장된 코드인경우 native code라고 나옵니다.

 

 

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

3이나오고 

sum.apply(null,[4,2])

6이나옵니다.

 

sum(1,2)라고 한것과 sum.apply(null,[1,2])을 볼때 

 

sum(1,2) 1은 sum.apply(null,[1,2]) 1이고

sum(1,2) 2는 sum.apply(null,[1,2]) 2입니다.

 

사용법은 sum.apply(null,[1,2]) 이런식으로 사용됩니다.

 

그이유는 

 

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(null)이였는데

  

sum.apply(01)호출하면 function sum() 호출됩니다.

 

o1 객체를 인자로 호출하게 되면 

 

o1 이객체는 this가 됩니다.

 

즉 let this =o1 이것이 암묵적으로 들어가 있는 겁니다.

 

this 는 o1이 들어가 있기 때문에 

o1의 대한 for in 문이 실행되면 o1객체에 들어있는 값들을 _sum에 더해서 리턴했기 때문에 6이 된겁니다.

 

자 정리하면 sum.apply(o1) 호출한다는 것은 이독립되었는 sum 함수가 

 

sum.apply(o1) 실행 하게되면 o1이라는 객체에 o1.sum 가 됩니다.

 

 

이 포스팅은 생활코딩을 참고해서 만든 포스팅입니다. egoing님 감사합니다.

 

'JAVASCRIPT' 카테고리의 다른 글

this  (0) 2020.11.05
생성자와 new 객체지향  (0) 2020.11.04
매개변수의 수  (0) 2020.11.03
arguments  (0) 2020.11.03
클로저2  (0) 2020.11.02