>웹 프론트엔드 >JS 튜토리얼 >함수를 호출하는 다양한 방법과 이를 가리키는 방법에 대한 자세한 설명

함수를 호출하는 다양한 방법과 이를 가리키는 방법에 대한 자세한 설명

小云云
小云云원래의
2018-02-06 09:22:021998검색

1. 함수 호출 방법

1. 함수로서 직접적이고 이해하기 쉬운 방법(즉, 함수 호출 모드).

2. 메소드는 객체에 연결되어 객체에 의해 호출되는 형태입니다.

3. 생성자로서 생성 과정에서 새로운 객체가 생성됩니다.

4. 함수의 적용 또는 호출 방법을 통해.

이 글에서는 주로 함수 호출의 다양한 방법과 그 방향에 대해 간략하게 설명합니다. 편집자님이 꽤 좋다고 생각하셔서 지금 공유하고 모두에게 참고용으로 드리고자 합니다. 편집자를 따라가서 모두에게 도움이 되기를 바랍니다.

2. 함수 매개변수

1. 매개변수 전달

(1) 함수 정의 변수보다 많은 변수를 전달합니다.

(2) 함수에서 변수를 정의할 때 추가 변수가 전달되고 추가 변수는 정의되지 않습니다.

2 함수가 호출되면 두 매개변수인 인수와 this가 보이지 않게 전달됩니다(즉, 인수와 이는 조용히 함수)에 전달되어 함수의 범위에서 작동합니다.

(1) 인수: 함수가 호출될 때 함수에 전달되는 변수 집합(argument.length 속성이 있음)

예: 인수[0]은 함수에 전달되는 첫 번째 매개 변수를 나타냅니다.

(2) this 하나의 개체와 연결되어 있습니다.

호출 방식에 따라 포인트도 다릅니다. 따라서 이것이 호출 컨텍스트입니다.

3. this를 가리키는

1. 함수 호출 모드(this->window)

이 함수는 어떤 객체의 속성에도 속하지 않습니다.

function fn1(){
 //some code
}
fn1();
或着:
var fn2=function(){
 //some code
}
fn2();
使用这种方式调用函数,函数的上下文是全局上下文(global context即window)。this->window。

2. 메소드 호출 모드(this->메소드가 속한 객체)

이 함수는 객체의 속성입니다. 이 함수가 호출되면 이 객체의 메소드로 간주됩니다.

var obj={
 //some code;
};
obj.getname=function(){
 //some name
}
obj.getname();
函数的上下文是这个对象(例子中的 obj)。this->obj

3. 생성자 호출 모드(this->새 개체 생성)

함수를 생성자로 호출하면 다음과 같은 특징이 있습니다.

새 개체가 생성됩니다.

이 새 개체가 전달됩니다. constructor를 this 매개변수로 지정합니다. 즉, 이 새 객체는 생성자 함수의 컨텍스트입니다.

명시적인 return 문이 없으면 이 새 객체는 암시적으로 반환됩니다(즉, 조용히 반환됩니다). 이 생성자의 값입니다.

function Fn(){
 this.a=function(){
   return this;
 }
}
var n=new Fn();
console.log(n.a());//Fn{a:f}
console.log(n);//fn{a:f}
//此例中,构造了一个构造函数Fn((),利用new关键字调用时一个空的对象被创建出来,并传递到函数中作为this存在。this-Fn(新的)
//这个构造器同时创建了a属性,并将此属性作为一个方法赋予给它创建出新对象的实例。

4.apply()는 call() 메소드를 가져옵니다(이것은 우리가 지정하는 임의의 객체일 수 있습니다)

(1) apply(), 두 개의 매개변수. 첫 번째 매개변수: 함수의 컨텍스트로 사용되는 개체입니다. 두 번째 매개변수: 매개변수 배열입니다.

(2) call(), 두 개의 매개변수. 첫 번째 매개변수: 함수 컨텍스트로 사용되는 개체입니다. 두 번째 매개변수: 인수 목록.

call() 및 apply()는 주로 함수 콜백에 사용됩니다.

function circle(list,calback){
 for(var i=0;i<list.length;i++){
   calback.call(list[i],i);
 }
}
var list=[&#39;a&#39;,&#39;b&#39;,&#39;c&#39;];
circle(list,function(index){
 console.log(index);//0,1,2(即传进来的i值)
 console.log(this);//a,b,c(call的第一个参数)
});
//this->call()传递进来的第一个参数。

관련 권장 사항:

여러 문을 실행하는 Mysqli 일괄 실행 및 여러 문을 실행하기 위한 하나의 함수 호출

WeChat 애플릿 페이지의 데이터 데이터 작업 및 함수 호출에 대한 자세한 설명

해결 방법 js 부모 정의되지 않은 함수 문제는 함수가 하위 함수를 호출할 때 발생합니다

위 내용은 함수를 호출하는 다양한 방법과 이를 가리키는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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