>웹 프론트엔드 >JS 튜토리얼 >js에서 적용 및 호출의 간단한 사용법에 대한 자세한 설명

js에서 적용 및 호출의 간단한 사용법에 대한 자세한 설명

小云云
小云云원래의
2017-12-28 09:14:541423검색

call과 Apply가 이를 동적으로 변경하는 것처럼 보입니다. 객체에는 특정 메서드가 없지만 다른 객체에는 있는 경우 call이나 Apply를 사용하여 다른 객체의 메서드를 사용하여 작업할 수 있습니다. 이 글은 주로 js에서 적용과 호출의 간단한 사용법을 소개합니다. 관심 있는 친구들이 참고할 수 있기를 바랍니다.

call과 apply는 JavaScript 엔진에 의해 내부적으로 구현되는 Function.prototype의 메소드로 Function.prototype에 속하기 때문에 각 Function 객체 인스턴스, 즉 각 메소드는 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은 동적으로 이것을 가리킵니다. b로 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를 통한 것입니다. by getElementsByTagName은 배열과 유사한 배열입니다. Array에서는 push, pop 등의 메소드를 적용할 수 없습니다. domNodes가 Array 아래의 모든 메서드를 적용할 수 있도록 다음을 전달할 수 있습니다.

var domNodes = Array.prototype.slice.call(document.getElementsByTagName("*"));

관련 추천:


함수 본문의 내부 포인터를 변경하기 위한 자바스크립트의 적용 및 호출 사용 예에 ​​대한 자세한 설명

js의 call() 및 apply() 이해

Js의 이 점 call() 및 바인딩()에 문제가 있습니다

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

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