이전 기사는 익명 기능을 호출하는 다양한 방법을 언급했습니다. 이 기사에서는 이름을 지정하는 다양한 방법을 살펴 봅니다.
1. ()
가장 일반적으로 사용되는 기능은 기능을 호출/실행하는 것입니다.
코드 사본은 다음과 같습니다.
// 매개 변수 기능 없음 fun1
function fun1 () {
Alert ( 'I'm Log ');
}
fun1 ();
// 매개 변수 함수 fun2
기능 fun2 (param) {
경고 (param);
}
fun2 ( 'I'm lall ');
ECMAScript3 후에는 함수를 호출하고 적용하면 두 가지 유형의 기능이 있습니다.
2. 전화
코드 사본은 다음과 같습니다.
// 매개 변수 기능 없음 fun1
function fun1 () {
Alert ( 'I'm Log ');
}
fun1.call (null);
// 매개 변수 함수 fun2
기능 fun2 (param) {
경고 (param);
}
fun2.call (Null, 'I'm Loging ')
3. 적용하십시오
코드 사본은 다음과 같습니다.
// 매개 변수 기능 없음 fun1
function fun1 () {
Alert ( 'I'm Log ');
}
fun1.apply (null);
// 매개 변수 함수 fun2
기능 fun2 (param) {
경고 (param);
}
fun2.apply (null, [ 'I'm lall '])
Call, Apply는 순전히 Call/Execute 함수를 사용하여 기능 실행의 컨텍스트를 변경하는 데 더 많이 사용됩니다.
4. 새로운 (이 방법은 권장되지 않음)
코드 사본은 다음과 같습니다.
// 매개 변수 기능 없음 fun1
function fun1 () {
Alert ( 'I'm Log ');
}
새로운 fun1 ();
// 매개 변수 함수 fun2
기능 fun2 (param) {
경고 (param);
}
New Fun2 ( 'I'm lall ')
New의 본질은 클래스의 인스턴스를 작성/구성하는 것입니다. 여기에 정의 된 Fun1 및 Fun2는 분명히 클래스가 아닙니다 (아니요, 프로토 타입 없음). 그러나 두 기능 모두 실행되었습니다. 이것은 새로운의 부작용입니다.
위의 통화 방법에서 4 가지 방법의 실행 결과에는 차이가 없습니다. 그러나 함수에 반환 값이 있으면 새로운 방식으로 호출 할 때 실망 할 수 있습니다.
코드 사본은 다음과 같습니다.
// 리턴 값으로 재미있게 작동합니다
기능 fun () {
Alert ( 'I'm Log ');
"잭"을 반환합니다.
}
var c = new fun ();
Alert (c); // [Object Object], 왜 "잭"이 아닌가?
이것으로 변경하십시오
코드 사본은 다음과 같습니다.
// 리턴 값으로 재미있게 작동합니다
기능 fun () {
Alert ( 'I'm Log ');
반환 {이름 : 'jack'};
}
var c = new fun ();
경고 (c.name); // 잭, 정상적으로 돌아 왔습니다
요약 : 기능을 새로운 방식으로 호출 할 때. 리턴 값이있는 경우 리턴 값이 String (String), 번호 (번호), 부울 등과 같은 JavaScript의 내장 유형 (기본 유형)이면 값이 반환되지 않습니다. 리턴 값이 객체 유형 인 경우 객체, 기능 및 배열이 직접 반환됩니다.
리턴 값이 내장 유형 (기본 유형) 인 경우 New Fun ()는 정확히 무엇을 반환합니까? 다음 기사에서는 새로운 방법 호출의 세부 사항에 대해 논의합니다.