>웹 프론트엔드 >JS 튜토리얼 >js 호출 사용법

js 호출 사용법

hzc
hzc앞으로
2020-07-03 11:00:382373검색

call method
현재 객체를 다른 객체로 대체하기 위해 객체의 메소드를 호출합니다.
call([thisObj[,arg1[, arg2[, [,.argN]]]]]) call([thisObj[,arg1[, arg2[, [,.argN]]]]])
参数
thisObj
可选项。将被用作当前对象的对象。
arg1, arg2, , argN 매개변수
thisObj
선택 사항입니다. 현재 객체로 사용될 객체입니다.
arg1, arg2, , argN
선택사항. 일련의 메소드 매개변수가 전달됩니다.
설명
호출 메서드를 사용하면 다른 개체 대신 메서드를 호출할 수 있습니다. call 메소드는 함수의 객체 컨텍스트를 초기 컨텍스트에서 thisObj가 지정한 새 객체로 변경합니다.
thisObj 매개변수가 제공되지 않으면 전역 개체가 thisObj로 사용됩니다.
언뜻 보면 혼동하기 쉽습니다. 먼저 몇 가지 간단한 설명을 하겠습니다.
obj1.method1.call(obj2, 인수1, 인수2)

위와 같이 호출의 기능은 obj2에 obj1의 메서드를 추가하는 것입니다. 나중에 사용하십시오. 인수1..이는 매개변수로 전달됩니다.

구체적인 예를 들어보겠습니다

function add(a,b) { 
   alert(a+b); 
 } 
 function sub(a,b) { 
  alert(a-b); 
 } 
 add.call(sub,3,1);

이 예의 의미는 sub를 add, add.call(sub,3,1) == add(3,1)로 바꾸는 것이므로 실행 결과는 다음과 같습니다: Alert(4) ; // 참고: js의 함수는 실제로 객체이며 함수 이름은 Function 객체에 대한 참조입니다.
조금 더 복잡한 예를 살펴보겠습니다

function Class1() { 
     this.name = "class1"; 
     this.showNam = function() { 
         alert(this.name); 
     } 
} 
function Class2() { 
     this.name = "class2"; 
} 
var c1 = new Class1(); 
var c2 = new Class2(); 
c1.showNam.call(c2)

호출은 c2에 c1의 메소드를 넣어서 실행한다는 뜻입니다. 원래 c2에는 showNam() 메소드를 넣는 것입니다. c1 on c2 실행. 따라서 this.name은 class2여야 하며 실행 결과는 다음과 같습니다. Alert ("class2")

어떻게 생각하시나요? 흥미로운 점은 객체 a가 객체 b의 메서드를 실행하도록 할 수 있다는 것입니다. 이는 Java 프로그래머가 감히 생각하지 못하는 것입니다. 더 흥미로운 점은 호출을 사용하여 상속을 구현할 수 있다는 것입니다

function Class1(){ 
      this.showTxt = function(txt) { 
          alert(txt); 
      } 
 } 
 function Class2() { 
      Class1.call(this); 
 } 
 var c2 = new Class2(); 
 c2.showTxt("cc");

이런 방식으로 Class2는 Class1을 상속합니다. Class1.call(this)은 이 객체 대신 Class1 객체를 사용한다는 의미입니다. 그러면 Class2에는 모든 속성과 속성이 없습니다. Class1 메소드의 경우 c2 객체는 Class1의 메소드와 속성을 직접 호출할 수 있으며 실행 결과는 다음과 같습니다. 경고("cc")

예, 그게 바로 javaScript가 객체지향에서 상속을 시뮬레이션하는 방법입니다. 상속을 받을 수 있습니다.

function Class10() { 
      this.showSub = function(a,b)  { 
          alert(a-b); 
      } 
 } 
 function Class11() { 
      this.showAdd = function(a,b) { 
          alert(a+b); 
      } 
 } 
 function Class2() { 
      Class10.call(this); 
      Class11.call(this); 
 }

두 번의 호출을 사용하면 다중 상속이 가능합니다
물론, 프로토타입 체인을 사용하는 것과 같은 다른 상속 방법도 있습니다. call here

제가 call 에 대해 언급했는데, 물론 apply는 기본적으로 이 두 가지 방법이 같은 의미입니다

차이점은 call의 두 번째 매개변수는 어떤 유형이든 될 수 있는 반면 Apply의 두 번째 매개변수는 배열이어야 한다는 것입니다

권장 튜토리얼: "🎜JS Tutorial🎜 》🎜

위 내용은 js 호출 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제