call과 Apply가 이를 동적으로 변경하는 것처럼 보입니다. 객체에는 특정 메서드가 없지만 다른 객체에는 있는 경우 call이나 Apply를 사용하여 다른 객체의 메서드를 사용하여 작업할 수 있습니다. 이 글은 주로 js에서 적용과 호출의 간단한 사용법을 소개합니다. 관심 있는 친구들이 참고할 수 있기를 바랍니다.
call과 apply는 JavaScript 엔진에 의해 내부적으로 구현되는 Function.prototype의 메소드로 Function.prototype에 속하기 때문에 각 Function 객체 인스턴스, 즉 각 메소드는 call과 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()의 this는 a를 가리키고, call은 동적으로 이것을 가리킵니다. b로 b.getName()apply
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]) ); //6call과 apply의 일반적인 사용법더 일반적으로 사용되는 것은 document를 통한 것입니다. by getElementsByTagName은 배열과 유사한 배열입니다. Array에서는 push, pop 등의 메소드를 적용할 수 없습니다. domNodes가 Array 아래의 모든 메서드를 적용할 수 있도록 다음을 전달할 수 있습니다.
var domNodes = Array.prototype.slice.call(document.getElementsByTagName("*"));관련 추천:
함수 본문의 내부 포인터를 변경하기 위한 자바스크립트의 적용 및 호출 사용 예에 대한 자세한 설명
Js의 이 점 call() 및 바인딩()에 문제가 있습니다
위 내용은 js에서 적용 및 호출의 간단한 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!