js에서 적용 및 호출의 간단한 사용법

小云云
풀어 주다: 2017-12-09 13:29:00
원래의
1391명이 탐색했습니다.

call과 Apply가 이를 동적으로 변경하는 것처럼 보입니다. 객체에는 특정 메서드가 없지만 다른 객체에는 있는 경우 call이나 Apply를 사용하여 다른 객체의 메서드를 사용하여 작업할 수 있습니다. 이 기사에서는 모든 사람에게 도움이 되기를 바라며 js에서 적용 및 호출의 간단한 사용법을 주로 공유합니다.

call과 apply는 JavaScript 엔진에 의해 내부적으로 구현되는 Function.prototype의 메소드로 Function.prototype에 속하기 때문에 각 Function 객체 인스턴스, 즉 각 메소드는 call과 apply 속성을 갖습니다. 이 두 가지 방법은 동일한 기능을 가지고 있지만 서로 다른 방식으로 사용되기 때문에 혼동하기 쉽습니다.
위에서 call, Apply 라는 결론을 내릴 수 있습니다. 메소드를 호출하는 this 포인터를 변경하기 위해 메소드에 사용됩니다

간단한 예:

call

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()의 this는 a를 가리키고, call은 동적으로 이것을 가리킵니다. to b and be b.getName()

apply

apply와 call은 매개변수 사용법만 다를 뿐입니다

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
로그인 후 복사

call과 apply의 일반적인 사용법

대부분의 경우, document.getElementsByTagName을 통해 선택된 DOM 노드는 배열과 유사한 배열입니다. Array에서는 push, pop 등의 메소드를 적용할 수 없습니다. domNodes가 Array 아래의 모든 메소드를 적용할 수 있도록

var domNodes = Array.prototype.slice.call(document.getElementsByTagName("*"));
로그인 후 복사

을 전달할 수 있습니다.

관련 권장 사항:

JavaScript에서 상속 구현을 위해 호출 및 적용을 사용하는 방법에 대한 자세한 설명

JavaScript에서 호출, 적용 및 바인딩이 수행하는 작업은 무엇인가요? 왜 사용합니까?

JavaScript에서 적용과 호출의 차이점에 대한 자세한 설명

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿