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>
'매일코딩 > 자바스크립트 개념' 카테고리의 다른 글
[자바스크립트 객체지향] 2 자바스크립트 함수가 독특한 이유 (0) | 2017.06.20 |
---|---|
[자바스크립트 객체지향] 1 원시타입과 참조타입 정리 (0) | 2017.06.19 |
[생활코딩 함수] arguments 4 (0) | 2017.06.02 |
[생활코딩 함수 ] 클로저 3 (0) | 2017.06.01 |
[생활코딩 함수] 값으로서의 함수 2 (0) | 2017.05.31 |
댓글