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 중국어 웹사이트의 기타 관련 기사를 참조하세요!