함수는 객체입니다. 객체는 속성을 가지고 있습니다. 값이 저장되있으면 속성 프로퍼티라고 합니다.
그 속성에 함수가 들어있으면 메소드라고 합니다. 메소드는 자바스크립트가 내장된 객체입니다.
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 |