Function 유형

4618 단어 function
학습 요점: 1.함수의 성명 방식 2.값으로서의 함수 3.함수의 내부 속성 4.함수 속성 및 방법
ECMAScript에서 Function 유형은 실제로 객체입니다.각 함수는 Function 유형의 인스턴스이며 다른 참조 유형과 마찬가지로 속성과 메서드가 있습니다.함수는 대상이기 때문에 함수 이름도 사실상 함수 대상을 가리키는 지침이다.1. 함수의 성명 방식 1.일반 함수 설명
function box(num1, num2) {
return num1+ num2;
}

 2.변수 초기화 함수 사용하기
var box= function(num1, num2) {
return num1 + num2;
};

 3.Function 구조 함수 사용
var box= new Function('num1', 'num2' ,'return num1 + num2');

PS: 세 번째 방식은 이 문법이 두 번의 코드를 해석할 수 있기 때문에 추천하지 않습니다. (첫 번째는 일반적인 ECMAScript 코드를 해석하고 두 번째는 전송 구조 함수에 있는 문자열을 해석함) 성능에 영향을 줍니다.그러나 우리는 이런 문법을 통해'함수는 대상이고 함수명은 지침'이라는 개념을 이해할 수 있다.2. 함수인 ECMAScript의 함수 이름 자체가 변수이므로 함수도 값으로 사용할 수 있습니다.즉 매개 변수를 전달하는 것처럼 한 함수를 다른 함수에 전달할 수 있을 뿐만 아니라 한 함수를 다른 함수의 결과로 되돌릴 수 있다는 것이다.
function box(sumFunction, num) {
return sumFunction(num); //someFunction
}
function sum(num) {
return num + 10;
}
var result = box(sum, 10); // 

3. 함수 내부 속성은 함수 내부에 두 가지 특수한 대상이 있는데 그것이 바로arguments와this이다.arguments는 클래스 그룹의 대상으로 전입 함수에 포함된 모든 파라미터를 포함하며 주요 용도는 함수 파라미터를 저장하는 것이다.그러나 이 대상에는callee라는 속성이 하나 더 있다. 이 속성은 바늘로 이arguments 대상을 가진 함수를 가리킨다.
function box(num) {
if (num <= 1) {
return 1;
} else {
return num * box(num-1); // 
}
}

곱셈 함수는 일반적으로 귀속 알고리즘을 사용하기 때문에 함수 내부에서 반드시 자신을 호출한다.만약 함수 이름이 바뀌지 않는다면 문제없지만, 함수 이름이 바뀌면 내부의 자체 호출은 하나하나 수정해야 한다.이 문제를 해결하기 위해서 우리는arguments를 사용할 수 있다.대신 콜렉션으로.
function box(num) {
if (num <= 1) {
return 1;
} else {
return num * arguments.callee(num-1);//  callee  
}
}

함수 내부의 또 다른 특수 대상은this인데 자바와 C#의this와 대체적으로 비슷하다.다시 말하면this는 함수를 인용하여 조작을 수행하는 대상이나 함수 호출문이 있는 그 작용역을 인용한다.PS: 전역 역할 영역에서 함수를 호출할 때this 대상이 인용하는 것은 window입니다.//이해하기 쉬운 개작 예
window.color = ' '; // ,  var color = ' '; 
alert(this.color); //  color
var box = {
color : ' ', //  color
sayColor : function () {
alert(this.color); //  this   box   color
}
};
box.sayColor(); //  color
alert(this.color); // 

//인용 교재의 원판 예
window.color = ' '; //  var color = ' '; 
var box = {
color : ' '
};
function sayColor() {
alert(this.color); // ,  box  
}
getColor();
box.sayColor = sayColor; //  box  , 
box.sayColor();

4. 함수 속성 및 메서드 ECMAScript의 함수는 객체이므로 함수에도 속성과 메서드가 있습니다.모든 함수는 두 개의 속성을 포함합니다:length와prototype.여기서 length 속성은 함수가 수신하고자 하는 이름 매개 변수의 개수를 나타냅니다.
function box(name, age) {
alert(name + age);
}
alert(box.length); //2

PS:prototype 속성에 대해 모든 실례적인 방법을 저장하는 진정한 곳, 즉 원형이다.이 속성은 우리가 대상을 대상으로 한 장에서 상세하게 소개할 것이다.prototype에는 두 가지 방법이 있는데 그것이 바로 apply()와call()이다. 모든 함수는 이 두 가지 비계승적인 방법을 포함한다.이 두 방법의 용도는 모두 특정한 작용역에서 함수를 호출하는데 실제로는 함수 체내의this 대상의 값을 설정하는 것과 같다.
function box(num1, num2) {
return num1 + num2; // 
}
function sayBox(num1, num2) {
return box.apply(this, [num1, num2]); //this  ,  window
} //[]  box  
function sayBox2(num1, num2) {
return box.apply(this, arguments); //arguments   box  
}
alert(sayBox(10,10)); //20
alert(sayBox2(10,10)); //20

call () 방법은 apply () 방법과 같고, 그들의 차이는 단지 파라미터를 수신하는 방식이 다르기 때문이다.call() 방법의 경우 첫 번째 파라미터는 작용역으로 변화가 없고 변화는 나머지 파라미터가 함수에 직접 전달될 뿐이다.
function box(num1, num2) {
return num1 + num2;
}
function callBox(num1, num2) {
return box.call(this, num1, num2); //  apply  
}
alert(callBox(10,10));

사실 전달 매개 변수는 apply()와call() 방법이 진정으로 유용한 곳이 아니다.그것들이 자주 사용하는 곳은 함수를 확장하여 운행할 수 있는 작용역이다.
var color = ' '; //  window.color = ' '; 
var box = {
color : ' '
};
function sayColor() {
alert(this.color);
}
sayColor(); //  window
sayColor.call(this); //  window
sayColor.call(window); //  window
sayColor.call(box); //  box, 

이 예는 이전 작용역 이해의 예로 수정된 것입니다. 우리가 콜 (box) 방법을 사용할 때sayColor () 방법의 운행 환경이 박스 대상이 되었다는 것을 알 수 있습니다.콜()이나 apply()를 사용하여 작용역을 확장하는 가장 큰 장점은 대상이 방법과 어떠한 결합 관계(결합, 즉 서로 관련된다는 뜻으로 확장과 유지보수가 연쇄반응을 일으킨다는 것이다.즉, box 대상과sayColor () 방법 사이에는 여분의 관련 조작이 없을 것이다. 예를 들어 box.sayColor = sayColor;

좋은 웹페이지 즐겨찾기