>  기사  >  웹 프론트엔드  >  JavaScript 함수의 컨텍스트는 무엇입니까?

JavaScript 함수의 컨텍스트는 무엇입니까?

伊谢尔伦
伊谢尔伦원래의
2017-07-25 11:31:222456검색

함수 컨텍스트

Java나 C/C++와 같은 언어에서 메소드(함수)는 객체에 부착되어만 존재할 수 있으며 독립적이지 않습니다. JavaScript에서 함수는 개체이며 다른 개체의 일부가 아닙니다. 특히 함수형 JavaScript를 이해하려면 함수를 일급으로 간주합니다.

함수의 컨텍스트는 변경될 수 있으므로 함수 내에서도 변경될 수 있습니다. 함수는 한 개체의 메서드로 사용될 수도 있고 동시에 다른 개체의 메서드로 사용될 수도 있습니다. 독립적인. 함수의 컨텍스트는 함수 객체의 호출 또는 적용 함수를 통해 수정할 수 있습니다.

call 및 Apply
call 및 Apply는 일반적으로 함수의 this 포인터가 대체됩니다. 첫 번째 매개변수 호출 또는 적용을 사용하여 JavaScript 객체 및 JSON 시작하기의 예를 살펴보겠습니다.

//定义一个人,名字为jack 
var jack = { 
name : "jack", 
age : 26 
} 
//定义另一个人,名字为abruzzi 
var abruzzi = { 
name : "abruzzi", 
age : 26 
} 

//定义一个全局的函数对象 
function printName(){ 
return this.name; 
} 

//设置printName的上下文为jack, 此时的this为jack 
print(printName.call(jack)); 
//设置printName的上下文为abruzzi,此时的this为abruzzi 
print(printName.call(abruzzi)); 

print(printName.apply(jack)); 
print(printName.apply(abruzzi)); 
只有一个参数的时候call和apply的使用方式是一样的,如果有多个参数: 

setName.apply(jack, ["Jack Sept."]); 
print(printName.apply(jack)); 

setName.call(abruzzi, "John Abruzzi"); 
print(printName.call(abruzzi));

결과는 다음과 같습니다.

Jack Sept. 
John Abruzzi 
apply的第二个参数为一个函数需要的参数组成的一个数组,而call则需要跟若干个参数,参数之间以逗号(,)隔开即可。

위 내용은 JavaScript 함수의 컨텍스트는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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