기능 호출 방법
세 형제에 대해 이야기하기 전에 자바 스크립트로 신청하고 묶기 전에 기능의 호출 방법에 대해 이야기하고 싶습니다.
• 함수로
• 방법으로
• 생성자로서
• 전화 () 및 apply () 메소드를 간접적으로 호출하십시오
우리는 모두 이전의 세 가지 호출 방법을 알고 있으며이 기사의 범위 내에 있지 않으므로 그것에 대해 이야기하지 않을 것입니다.
네 번째 통화 방법에 대해 이야기합시다
Call () 및 apply ()를 통해 간접 전화
실제로, 우리는이 두 함수를 특정 객체의 메소드로 간주하고 메소드를 호출하여 간접적으로 함수를 호출 할 수 있습니다.
함수 f () {} f.call (o); f.apply (o);Call () 및 apply ()의 첫 번째 매개 변수는 기능을 호출하는 상위 오브젝트입니다. 그것은 호출 컨텍스트이며, 이에 대한 참조는 기능 본문 내에서 이것을 통해 얻습니다.
그래서 그것들은 동일합니까, 아니면 차이점과 바인드 방법이 있습니까? 걱정하지 마십시오. 아래 세 가지의 차이점과 연결을 자세히 분석 해 봅시다.
부르다()
Call () 메소드는이 포인터 (idiot, 정확성에 대해 귀찮게하지 않음)와이를 호출하는 메소드에 매개 변수를 지정합니다. 예를 들어, 다음과 같은 기능이 있습니다.
var fn = function (arg1, arg2) {console.log (this, arg1, arg2); }나는 그것을 부를 것이다 :
fn.call (null, 'skylor', 'min'); //1fn.call(udlefined, 'skylor', 'min'); // 2var fx = function () {} fn.call (fx, 'skylor', 'min'); // 3이 세 가지 호출 방법의 반환 값은 얼마입니까? 넌센스 없음, 참조하십시오.
1. NULL "Skylor" "Min"2. 정의되지 않은 "Skylor" "Min"3. FX "Skylor" "Min"
이것이 사실입니까? 당신은 똑똑하고 브라우저 콘솔로 가서 시도해보십시오. 갈 게요, 당신은 사기꾼입니다. 그것은 다음과 같습니다.
크롬 1. 창 "Skylor" "Min"2. 창 "Skylor" "Min"3. FX "Skylor" "Min"
좋아, 당신은 똑똑합니다. 그러나 이것은 이미 호출 방법을 잘 보여줍니다. (창은 매우 진보되어 Microsoft가 킥킥 웃고 있습니다 ...)
호출 메소드, 첫 번째 매개 변수는이 포인터를 지정하는 것임을 알았으며 그 다음에 각 매개 변수는 필요한 매개 변수를 지정합니다. "각각"을 사용합니다. 즉, 여러 매개 변수가 필요하고 함수를 호출하고 각 매개 변수를 하나씩 작성하려고합니다.
적용하다()
apply ()는 Call ()의 형제입니다. 다른 장소는 동일하게 보이고, 그들은 모두 남자이지만, 한 곳에서 다릅니다. 먼저 예를 살펴 보겠습니다.
fn.apply (null, [ 'skylor', 'min']); //1fn.apply(fx, [ 'skylor', 'min']); // 2
형제, 당신은 그것을 잘못 썼습니까? 더 많은 괄호가 있습니다. 아니요, 아니요, 아니요, 이것이 통화와 다르게 보이게하는 것입니다. 두 번째 매개 변수는 필요한 매개 변수 배열입니다.
묶다()
바인드 (), 그들은 세 형제가 아니에요, 나는 이것을 이해합니다. 나는 이것을 이해합니다.
물론 BIND 메소드를 사용하면이 포인터를 지정할 수 있지만 함수를 호출하는 대신이 기능을 호출하는 a (또는 사본) 함수를 반환 하고이 기능에 특정이 포인터와 매개 변수를 지정합니다. 컨벤션, 예제는 모든 것을 보여줍니다.
var fnbound = fn.bind (null, 'skylor', 'min');
이 시점에서 fnbound는 함수이며,이 기능은 null을 가리키며 매개 변수는 [ 'skylor', 'min']입니다. 라고 불리는:
fnbound ();
결과:
Null, 'skylor', 'min'
나와 함께 창에 대해 걱정하지 마십시오. . . . .
Bind와 다른 두 형제의 차이점은 기능을 호출하지 않고 새로운 기능을 반환한다는 것입니다. 마찬가지로이 포인터 및 매개 변수도 지정합니다. 매개 변수를 지정하는 방법은 통화와 동일하며 하나씩 제공됩니다.
마지막 예를 들어 봅시다 :
var ShoppingCart = (function () {var _calculatePrice = function () {return this.price * this.amount;}; return {calculatePrice : _calculatePrice}}} (); var goods = {이름 : 199, 금액 : 2}; ShoppingCart.calculatePrice.call (GOSS);이것은 끝납니다. !
위는 편집자가 소개 한 JavaScript에서 적용, 전화 및 바인딩의 전체 내용입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!