>  기사  >  웹 프론트엔드  >  javascript 함수 속성 및methods_javascript 기술에 대한 간략한 토론

javascript 함수 속성 및methods_javascript 기술에 대한 간략한 토론

WBOY
WBOY원래의
2016-05-16 16:18:46828검색

각 함수에는 길이와 프로토타입이라는 두 가지 속성이 포함되어 있습니다
​​​​길이: 현재 함수가 받아들이기를 희망하는 명명된 매개변수의 수
프로토타입: 그들의 모든 강점 방법을 보존하는 실제 장소입니다

코드 복사 코드는 다음과 같습니다.

함수 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

위 내용은 이 글의 전체 내용입니다. 여러분이 좋아하시길 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.