각 함수에는 길이와 프로토타입이라는 두 가지 속성이 포함되어 있습니다
길이: 현재 함수가 받아들이기를 희망하는 명명된 매개변수의 수
프로토타입: 그들의 모든 강점 방법을 보존하는 실제 장소입니다
함수 sayName(이름) {
경고(이름);
}
함수 합계(숫자1, 숫자2) {
num1 num2 반환;
}
함수 sayHi() {
알림("안녕하세요");
}
Alert(sayName.length);//1 매개변수 개수는 1개입니다
Alert(sum.length);//2 매개변수 수: 2
Alert(sayHi.length);//0 매개변수 없음
각 함수에는 상속되지 않은 두 가지 메서드인 apply() 및 call()이 포함되어 있습니다.
이 두 메소드는 특정 범위의 함수를 호출하는데, 이는 실제로 함수 본문에서 이 객체의 값을 설정하는 것과 같습니다
첫째, apply()는 두 개의 매개변수를 허용합니다. 하나는 함수가 실행되는 범위이고 다른 하나는 매개변수 배열(배열 인스턴스 또는 인수 객체일 수 있음)
함수 합계(숫자1, 숫자2) {
num1 num2 반환;
}
함수 callSum1(num1, num2) {
return sum.apply(this, 인수);//인수 객체 전달
}
함수 callSum2(num1, num2) {
return sum.apply(this, [num1, num2]);
}
Alert(callSum1(10, 10));//20
경고(callSum2(10, 20));//30
둘째, 호출 메소드의 첫 번째 매개변수는 변경되지 않았습니다. 변경된 점은 나머지 매개변수가 모두 전달된 매개변수라는 점입니다.
함수 합계(숫자1, 숫자2) {
num1 num2 반환;
}
함수 callSum(num1, num2) {
return sum.call(this, num1, num2);
}
Alert(callSum(10, 200));
어떤 방법을 사용하는 것이 더 편리한지는 모두 귀하의 희망에 달려 있습니다. 매개변수가 없으면 어떤 매개변수를 사용하더라도 동일합니다.
그러나 적용 및 호출 방법은 단순히 선체 매개변수를 얻는 방법만을 위한 것이 아닙니다.
그들의 실제 무술 활용은 기능의 확장이다.
window.color = "빨간색";
var o = {색상: "파란색"};
함수 sayColor() {
경고(this.color);
}
sayColor();//red
sayColor.call(this);//red
sayColor.call(window);//red
sayColor.call(o);//blue
적용 및 호출을 사용하여 범위를 확장할 때 가장 큰 장점은 메서드와의 결합 관계가 필요하지 않다는 것입니다.
ECMAScript5는 바인딩()이라는 메서드도 정의합니다. 이 메소드는 이 값이 바인드 함수에 전달된 값에 바인딩될 함수의 인스턴스를 생성합니다.
window.color = "빨간색";
var o = {색상: "파란색"};
함수 sayColor() {
경고(this.color);
}
var bindFun = sayColor.bind(o);
bindFun();//blue
위 내용은 이 글의 전체 내용입니다. 여러분이 좋아하시길 바랍니다.