>웹 프론트엔드 >JS 튜토리얼 >JavaScript_javascript 기술의 함수 적용 및 호출 이해

JavaScript_javascript 기술의 함수 적용 및 호출 이해

WBOY
WBOY원래의
2016-05-16 15:50:521372검색

JavaScript 함수 호출은 4가지 모드로 구분됩니다.

1. 메소드 호출 모드: 즉, 객체에 Obj.methodName() 또는 Obj[methodName]()이라는 메소드 속성이 포함됩니다.
2. 함수 호출 모드: methodName().
3. 생성자 호출 모드: new MethodName().
4. ObjA.apply(ObjB,args[]) 또는 ObjA.call(ObjB,arg1,arg2...) 호출 모드를 적용하고 호출합니다.

함수가 호출되면 형식 매개변수 외에도 this 및 인수도 받습니다. 그 중 이것이 함수 객체 컨텍스트이고, 인수가 실제 매개변수입니다.
적용과 호출은 동일한 함수를 구현합니다. 즉, 함수 객체(이것이 가리키는 참조)의 컨텍스트를 전환하는 것입니다. 차이점은 형식 매개변수가 다르다는 것입니다. Apply는 인수 또는 배열이고, call은 쉼표로 구분된 여러 개별 형식 매개변수입니다.

function add(c) 
{ 
  alert(this.a+this.b+c); 
} 
var test={a:1,b:2} 
add.call(test,3);


add.call(test,3);을 실행하기 전에는 add와 test가 모두 window에 속해 있는데 이때는 이것이 window를 가리킨다. add.call(test,3); 실행 시 add 메소드 본문을 입력합니다. 이때는 this.a=test.a, this.b=test.b입니다. 및 c는 형식 매개변수로 전달됩니다. Alert()의 값은 1 2 3=6입니다. Apply에도 동일한 기능이 있습니다.

적용 및 호출을 통한 확장 및 상속:

function Animal(name){   
   this.name = name;   
   this.showName = function(){   
     alert(this.name);   
   }   
 }   
   
 function Cat(name){  
   Animal.call(this, name); 
 }   
   
 var cat = new Cat("Black Cat");//执行时,Cat函数体的this由window切换为Cat{}, 
// Animal函数体的this.name通过形式参数传入即为Black Cat,最终cat 
 //得到的结果为cat=Cat{name:"Black Cat",showName: function(){ alert(this.name);}, 
 cat.showName();//执行时this由window切换为 
 //Cat{name:"Black Cat",showName: function(){ alert(this.name);} 此时this.name 
 //为this.name=Cat.name,因此为Black Cat。

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