반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- StringWriter
- Linux셋팅
- include 지시자
- 상관서브쿼리
- include액션태그
- StringReader
- interrupt()
- sleep()메소드
- InputDialog
- ObjectInputStream
- 리눅스세팅
- MemoryStream
- isinterrupted()
- 아이디중복
- ThreadGroup()
- char[] String 형변환
- Daemon()
- 표현 언어
- String char[] 형변환
- ID중복
- 스레드그룸
- include지시자
- 리눅스셋팅
- first-of-child
- 동기화
- first-child
- Linux세팅
- interrupted()
- 메모리스트림
- 상관 서브 쿼리
Archives
- Today
- Total
다연이네
[days06] js call()/apply() 메소드 본문
반응형
call()/apply() 메소드
객체를 매개변수로 사용하여 메소드를 호출하는 함수
<script>
var person1 = { name:"jun", age:"24", print: function() {return this.name+"/"+this.age} */};
var person2 = { name:"yeon",
age:"23"
print: function() {
return this.name+"/"+this.age
}
};
</script>
위의 person1과 person2에서 이름, 나이 출력하는 print() 메소드가 중복된다.
=>이 메소드만을 가지는 객체를 따로 선언하자
<script>
var person1 = { name:"jun", age:"24",}; //js객체
var person2 = { name:"yeon",
age:"23"
}; //js객체
var person = {
print: function() {
return this.name+"/"+this.age
}
};
</script>
이 메소드를 호출하는 방법은 다음과 같다.
<script>
document.write(person.print.call(person1)+"<br>"); //jun/24
document.write(person.print.call(person2)+"<br>"); //yeon/23
document.write(person.print.apply(person1)+"<br>"); //jun/24
document.write(person.print.apply(person2)+"<br>"); //yeon/23
</script>
위 상황에는 call과 apply가 같은 결과를 출력한다.
그렇다면 차이점은 무엇일까?
메소드에 자체 매개변수가 있을 경우 call()/apply() 사용에 차이가 있다.
<script>
var person1 = { name:"jun", age:"24",};
var person2 = { name:"yeon", age:"23"};
var person = {
print: function(city, country) { //매개변수 !!
return this.name+"/"+this.age
+city+"/"+country;
}
};
메소드에 매개변수가 있는 경우,
call()을 사용해 호출시 인자를 나열한다. call(person1, '매개변수1', '매개변수2', ... );
apply()를 사용해 호출시 인자를 배열처럼 작성한다. apply(person1, [ '매개변수', '매개변수', ... ] );
<script>
//call() 인자 나열
document.write(person.print.call(person1, 'c', 'c')+"<br>"); //jun/24c/c
//apply() 배열 인자
document.write(person.print.apply(person2, ['c','c'])+"<br>"); //yeon/23c/c
</script>
반응형
'Web > JavaScript' 카테고리의 다른 글
[days06] draggable()와 마우스 관련 이벤트 (0) | 2020.12.16 |
---|---|
[days06] 클로저(Closure) (중요! 취업질문 多) (0) | 2020.12.16 |
[days05] js 객체와 함수 (0) | 2020.12.15 |
[days05] 1) js 클래스 + constructor 2) form태그 유효성 검사 (0) | 2020.12.15 |
[days05] Arrow Function (화살표 함수)와 this (0) | 2020.12.15 |
Comments