각 함수에는 길이와 프로토 타입의 두 가지 속성이 포함되어 있습니다
길이 : 현재 함수가 수락하려는 이름의 매개 변수 수
프로토 타입 : 모든 힘을 보존하는 진정한 방법입니다.
코드 사본은 다음과 같습니다.
함수 sayname (이름) {
경고 (이름);
}
함수 합 (num1, num2) {
Num1 + Num2를 반환합니다.
}
함수 sayshi () {
경고 ( "HI");
}
alert (sayname.length); // 1 개의 매개 변수 수입니다
경고 (sum.length); // 2 매개 변수 수 : 2
Alert (sayhi.length); // 0 매개 변수 없음
각 함수에는 두 가지가 아닌 방법이 포함되어 있습니다.
두 가지 방법 모두 기능을 특정 범위로 호출하는데, 실제로는 기능 본문 에서이 객체의 값을 설정하는 것과 같습니다.
첫 번째 Apply ()는 두 개의 매개 변수를 수락합니다. 하나는 실행중인 함수의 범위이고 다른 하나는 매개 변수 배열입니다 (배열 인스턴스 또는 인수 개체 일 수 있음)
코드 사본은 다음과 같습니다.
함수 합 (num1, num2) {
Num1 + Num2를 반환합니다.
}
함수 callum1 (num1, num2) {
return sum.apply (this, arguments); // 인수 객체를 통과하십시오
}
함수 Callsum2 (num1, num2) {
return sum.apply (this, [num1, num2]);
}
경고 (Callsum1 (10, 10)); // 20
경고 (Callsum2 (10, 20)); // 30
둘째, 호출 메소드의 첫 번째 매개 변수는 변경되지 않았습니다. 변경 사항은 다른 매개 변수가 전달되는 매개 변수이며 함수로 전달 된 매개 변수는 하나씩 나열되어야합니다.
코드 사본은 다음과 같습니다.
함수 합 (num1, num2) {
Num1 + Num2를 반환합니다.
}
함수 callum (num1, num2) {
return sum.call (this, num1, num2);
}
경고 (Callsum (10, 200));
어떤 방법이 더 편리한 지에 대해서는 전적으로 소원에 달려 있습니다. 매개 변수가없는 경우 어느 중 하나를 사용하는 것과 동일합니다.
그러나 적용 및 호출 방법의 모양은 분명히 선체 매개 변수를 제거하는 방법에 대한 것이 아닙니다.
그들의 실제 사용은 확장 기능이 의존하는 범위에 있습니다.
코드 사본은 다음과 같습니다.
window.color = "빨간색";
var o = {색상 : "파란색"};
함수 sayscolor () {
경고 (this.color);
}
saycolor (); // 빨간색
saycolor.call (this); // 빨간색
saycolor.call (창); // 빨간색
saycolor.call (o); // blue
적용 및 통화를 사용하여 범위를 확장하는 데있어 가장 큰 장점은 메소드와 결합 관계가 필요하지 않다는 것입니다.
ECMAScript5는 또한 메소드를 정의합니다. bind (). 이 메소드는 값이 바인드 함수로 전달 된 값에 바인딩되는 함수의 인스턴스를 만듭니다.
코드 사본은 다음과 같습니다.
window.color = "빨간색";
var o = {색상 : "파란색"};
함수 sayscolor () {
경고 (this.color);
}
var bindfun = saycolor.bind (o);
bindfun (); // blue
위의 것은이 기사에 관한 모든 것입니다. 나는 당신이 그것을 좋아할 수 있기를 바랍니다.