JavaScript 함수 대상 (클래스)

2756 단어 JavaScript

자바 스 크 립 트 의 가장 흥미 로 운 것 은 함수 가 사실상 기능 이 완전한 대상 일 수도 있다.
Function 클래스 는 개발 자가 정의 하 는 모든 함 수 를 나 타 낼 수 있 습 니 다.
Function 클래스 로 함 수 를 직접 만 드 는 문법 은 다음 과 같 습 니 다.
var function_name = new function(arg1, arg2, ..., argN, function_body)

위의 형식 에서 하나하나 arg 모두 하나의 매개 변수 이 고 마지막 매개 변 수 는 함수 주체 (실행 할 코드) 입 니 다.이 매개 변 수 는 문자열 이 어야 합 니 다.
아래 함수 기억 나 세 요?
function sayHi(sName, sMessage) {
  alert("Hello " + sName + sMessage);
}

이렇게 정의 할 수 있 습 니 다.
var sayHi 
= 
new Function("sName", "sMessage", "alert(\"Hello \" + sName + sMessage);");

문자열 의 관계 로 인해 이런 형식 은 쓰기 가 어렵 지만 함 수 를 이해 하 는 데 도움 이 되 는 것 은 인용 유형 에 불과 하 다. 그들의 행 위 는 Function 류 로 명확 하 게 만 든 함수 행위 와 같다.
아래 의 이 예 를 보십시오.
function doAdd(iNum) {
  alert(iNum + 20);
}

function doAdd(iNum) {
  alert(iNum + 10);
}

doAdd(10);	//   "20"

알다 시 피 두 번 째 함 수 는 첫 번 째 함 수 를 다시 불 러 와 doAdd (10) 로 하여 금 '30' 이 아니 라 '20' 을 출력 하 게 합 니 다.
다음 형식 으로 이 코드 블록 을 다시 쓰 면 이 개념 은 분명 하 다.
var doAdd = new Function("iNum", "alert(iNum + 20)");
var doAdd = new Function("iNum", "alert(iNum + 10)");
doAdd(10);

이 코드 를 살 펴 보 세 요. doAdd 의 값 이 서로 다른 대상 을 가리 키 는 지침 으로 바 뀌 었 음 이 분명 합 니 다.함수 명 은 함수 대상 을 가리 키 는 인용 값 일 뿐 행동 은 다른 대상 과 같 습 니 다.심지어 두 변 수 를 같은 함수 로 가리 킬 수 있 습 니 다.
var doAdd = new Function("iNum", "alert(iNum + 10)");
var alsodoAdd = doAdd;
doAdd(10);	//   "20"
alsodoAdd(10);	//   "20"

여기 서 변수 doAdd 는 함수 로 정의 되 고 alsodoAdd 는 같은 함 수 를 가리 키 는 지침 으로 밝 혀 집 니 다.이 두 변 수 를 사용 하면 이 함수 의 코드 를 실행 하고 같은 결 과 를 출력 할 수 있 습 니 다 - "20".따라서 함수 명 이 함수 의 변 수 를 가리 키 는 것 이 라면 함 수 를 매개 변수 로 다른 함수 에 전달 할 수 있 습 니까?대답 은 긍정!
function callAnotherFunc(fnFunction, vArgument) {
  fnFunction(vArgument);
}

var doAdd = new Function("iNum", "alert(iNum + 10)");

callAnotherFunc(doAdd, 10);	//   "20"

위의 예 에서 callAnotherFunc () 는 호출 할 함수 와 이 함수 에 전달 할 인자 가 두 개 있 습 니 다.이 코드 는 doAdd () 를 callAnotherFunc () 함수 에 전달 합 니 다. 매개 변 수 는 10 이 고 '20' 을 출력 합 니 다.
메모: Function 구조 함 수 를 사용 하여 함 수 를 만 들 수 있 지만 사용 하지 않 는 것 이 좋 습 니 다. 함 수 를 정의 하 는 것 이 전통 적 인 방식 보다 훨씬 느 리 기 때 문 입 니 다.그러나 모든 함 수 는 Function 류 의 인 스 턴 스 로 봐 야 합 니 다.

좋은 웹페이지 즐겨찾기