>  기사  >  웹 프론트엔드  >  js에서 적용 및 호출 사용에 대한 자세한 설명(코드 포함)

js에서 적용 및 호출 사용에 대한 자세한 설명(코드 포함)

php中世界最好的语言
php中世界最好的语言원래의
2018-04-16 09:30:321388검색

이번에는 js에서 apply and call 사용에 대한 자세한 설명을 가져오겠습니다(코드 포함). js에서 apply and call 사용 시 주의사항은 무엇인가요?

예제를 직접 보거나 소개를 먼저 읽어도 됩니다.

call 및 Apply를 사용하면 동적으로 이를 변경할 수 있습니다. 개체에 특정 메서드가 없지만 다른 개체에는 있는 경우 call 또는 Apply를 사용하여 다른 개체 의 메서드와 함께 작동할 수 있습니다.

call과 apply는 Function.prototype의 메소드로 JavaScript 엔진에 의해 내부적으로 구현됩니다. Function.prototype에 속하기 때문에 각 Function 객체 인스턴스 즉, 각 메소드에는 call, apply ​​​​속성이 있습니다. .메소드의 속성이기 때문에 그 사용은 물론 메소드마다 다릅니다. 이 두 메소드는 동일한 기능을 갖고 있지만 단지 다른 방식으로 사용될 뿐이므로 혼동되기 쉽습니다. apply
메서드를 호출하는 this 포인터를 변경하기 위해 메서드에 사용됩니다. 간단한 예:

전화

function A() {
  this.getName = function (xx) {
    return xx;
  }
}
function B() {
}
var a = new A();
console.log( a.getName('i am A') ); //i am A
var b = new B() ;
console.log( a.getName.call(b,'i am B') ); // i am B
B함수에는 메소드가 없고, A함수에는 getName() 메소드가 있는데, a.getName()은 당연히 성립하는데, B에서도 getName() 메소드를 사용해야 하는 경우에는 어떻게 해야 할까요? 그런 다음 call(this,'매개변수')를 사용하세요! !

이 문장을 다시 이해할 수 있습니다. 호출 또는 적용을 사용하여 다른 개체의 메서드를 호출하여 이를 동적으로 변경할 수 있습니다. , 원래 a.getName()은 a를 가리키고 호출은 이를 b를 동적으로 가리키며 b.getName()

이 되었습니다.

신청

적용과 호출은 매개변수 사용이 다를 뿐입니다

function A() {
  this.sun = function (a ,b) {
    return a+b;
  }
}
function B() {
}
var a = new A();
console.log( a.sun(1,2) ); //3
var b = new B() ;
console.log( a.sun.call(b,2,2) ); // 4
console.log( a.sun.apply(b,[3, 3]) ); //6

통화 및 신청의 일반적인 사용법

가장 일반적으로 사용되는 것은

document

.getElementsByTagName을 통해 선택된 dom 노드가 배열형 배열이라는 것입니다. Array에서는 push, pop 등의 메소드를 적용할 수 없습니다. 통과할 수 있습니다:

var domNodes = Array.prototype.slice.call(document.getElementsByTagName("*"));
이런 방식으로 domNodes는 Array 아래의 모든 메소드를 적용할 수 있습니다.

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 자료:

Angular 4에서 CSS 스타일 표시


vue 구성 요소가 숫자 추측 기능을 구현하는 방법


위 내용은 js에서 적용 및 호출 사용에 대한 자세한 설명(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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