전화 및 적용하십시오 차이가 뭘까?
'콜' 을 사용하여 '와' 는 어떤 차이가 적용하십시오 호출하십시오 함수은?
var func = function() {
alert('hello!');
};
'' vs ' (),' 펑c콜 펑c애플리 ();
앞에서 말한 두 가지 방법을 성능 차이가 있습니까? 이 때 사용할 수 있는 '콜' 오버 '베스트' 및 그 반대로 적용하십시오?
3002
21
다른 점은 '적용하십시오 사용하여 함수를 호출할 수 있습니다 "' 인수만" '표시됨과 스토리지였습니다.' '콜' 을 매개변수입니다 명시적으로 나열할 수 있어야 합니다. A , 는 위한 유용한 연상기호 _" arra comma.&quo , 에 대한 _을 및 C
39 에 관한 문서가 MDN& 지켜보리니 적용하십시오 및 매입옵션.
Dtep 문법:
'테풍크션.애플리 (발루포티스, 라이오파리스)'
'테풍크티언스콜 (발루포티스 arg1 arg2,,).'
또한, vmware. ES6 가능성을 3, ['전파하므로'] 이 어레이에는 '콜' 기능을 사용할 수 있는 here 호환성 볼 수 있습니다.
샘플 코드:
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
끝 - < 스니핏 >;!
스콧 앨런 k 는 [좋은 작성자] (http://odetocode.com/blogs/scott/archive/2007/07/04/function-apply-and-function-call-in-javascript.aspx) 이 문제에 대한.
기본적으로, 그들이 서로 어떻게 처리하는 기능을 인수만.
>. () 메서드를 호출 () 는 동일한 적용 제외) 로 어레이에서는 적용하십시오 () 가 두 번째 매개변수입니다. 이 어레이에는 대상에 대한 method." 인수만 나타냅니다.
그래서:
기능을 사용할 때, 각 부품에 대한 답변을 사용할 경우 적용하십시오 don& '' t know, you will be 반군지역 인수만 # 39 수가 있는 경우, 또는 이미 어레이나 같은 어레이입니다 객체 (object 포워드하도록 인수만 '같은' 자신의 주장. 그렇지 않으면 '콜' s no. # 39 there& 사용할 필요가 있는 랩 인수 이후 어레이입니다.
39 I& 때, 모든 인수 (마음에 들어), I 'm not 반군지역 I& # 39 m , 함수 호출' 이후 포지셔닝하십시오 호출하십시오. '' 를 의미하는 것이라고 적용하십시오 틀렸다니까 기능을 적용 (존재하지 않는) 인수만.
39 를 제외한 모든 성능 차이가 있을 수 있고, shouldn&, t '와' 랩 (wrap) 의 인수를 어레이에서는 적용하십시오 사용할 경우 (예를 들어 '프리애플리 (티노비치 [a, b, c])' 대신 '파스칼 (티노비치 a, b, c)'). 그래서 내가 haven& 차이가 있을 수 있지만, t # 39 테스트되었습니다 약간만이라도 있지만브라우저에 매우 구체적인. # 39 의 '콜' 가 더 빠르게 it& 가능성이 있는 경우, t '와' 적용하십시오 어레이에서는 이미 인수만 don& # 39 가 더 빠르게 수행할 경우.
39 의 here& 좋은 연상기호. <;;;;;;; /b> A< b> b> A< /b> 프리 /dev/raw/raw1 < 라이스 및 < b> A< /b>, 하나 또는 두 개의 인수,, 항상 걸린다. B> < 사용할 때,,,, 모든 /b> C< < b> C< /b> 인수만 수를 마운트 합니다.
이것은 오래된 주제, 동시에 보다 약간 지아프리스 스칼 지적하고 싶어서 # 39, 내가 can& 당근이지를 t tell you why).
지켜보리니 http://jsperf.com/test-call-vs-apply/3 에스페르프,
더글러스 크록 포드 잠시 언급, 이 둘 사이의 차이를 설명하란말야 도움이 될 수 있는 성능 차이. http://youtu.be/ya4UHuXNygM? t = 15m52s
한편, 제로 또는 그 이상의 시간이 걸리는 적용하십시오 인수만 배열입니다 호출하십시오 개별 매개변수입니다! 아 헉!
(이, [.]) '' 자마카베리
'스칼 (,, 이 param1 param2 param3 param4.)'
Inet6.0 추출을 에서 [마감: 이 의해 명확한 가이드 마이클 볼린] (http://www.amazon.com/closure-definitive-guide-michael-bolin/dp/ 1449381871). # 39 의 포화 it& 볼 수 있다며 그러나 이 약간 길고, 많은 인사이트를 부록 B. JavaScript 에서 자주 오해 Concepts" ";:
이 함수가 호출될 때 '는 뭐라구오
함수를 호출할 때 ' ()', '형태의 푸실바리바스 객체에는 푸실바 피쳐라고 합니다' 이 된다. 함수가 호출될 때 사용될 수 있는 것은 '이 값은 더':
수신기가 없는 경우, 그 함수가 호출될 때 명시성 되고 글로벌 객체에는 된다. 설명에 따라 goog.global" "; 이 때, 창은 47hz 페이지의 웹 브라우저에서 실행되는 글로벌 JavaScript 객체. 이로 인해 일부 놀라운 비헤이비어를:
비록 '오브j.아다발 주' 와 'f' () 는 다음과 같은 경우 다르게 행동하기 때문에 동일한 기능을 하는 다른 값을 수신기가 각 가능하다. 따라서 함수를 호출할 때 가리키는 '이', '이 정확한 값을 가질 때 반드시 확인해야 합니다' 라고 합니다. 이 '수' 의 경우, 함수 본문 관심용 referenced 선택해제합니다 않았습니다 'f' (20) '와' (20) 의 비헤이비어를 오브j.아다발 주 약간만이라도 마찬가지다.
Javascript 의 객체에는 최고급 기능이 있기 때문에, 자신의 방법이 있을 수 있습니다. 모든 기능을 할 수 있는 '가능하다' () '와' () 메서드를 호출 적용하십시오 재정의하려면 수신기 (즉, that '이' 는 객체에는) 함수를 호출할 때. 서명 방법은 다음과 같습니다.
단, 유일한 차이점은 '콜 ()' 와 ' () 함수 호출 ()' '' 에로남이네 적용하십시오 받은 만큼 개인 반면, ' ()' 는 매개변수입니다 인수만 적용하십시오 솔리드로 단일 어레이입니다:
',' F '와' 로 오브j.아다발 주 avamer 호출은 다음과 같은 함수 () 는 다음과 같은 뜻이 있다.
그러나 괜찼습니다 '콜 ()' ' ()' 는 이 값을 disk_b_s10database 적용하십시오 자체 수신기가 대체하십시오 수신기의 경우, 다음과 같은 주장을 미지정을 작동하지 않습니다.
'이' 가치 'null' 또는 '때' 정의되지 않은 함수가 호출될 수 없다. 'Null' 또는 '정의되지 않은' 때 '로 제공되는 호출 () ()', '또는' 수신기는 적용하십시오 글로벌 객체에는 대신 값은 수신기 이용되고 있다. 따라서 이전 코드는 '라는 속성 값을 동일하게 원치 않는 부작용이 추가에는' 글로벌 객체에는.
생각할 수도 있을 수 없기 때문에 도움됐네 역할을 하였던 변수를 워크플로가 할당되었는지. 따라서 이 때 가치가 있다는 생각에 강화하십시오 바인딩됩니다 함수가 호출될 때 아닌 정의된다.
이 시간에 유용한 기능을 한 객체에 대한 대출 빌리는 단순히 다른 객체에는 객체에는 실행하므로 빌린 것처럼, 즉 이 이 기능을 추가했다.
이러한 방식은 확증하노라 객체에는 임시 기능을 매우 유용합니다.
또 다른 예를 들어, 적용 및 호출하십시오 함께 바인딩하지.
39, & # 39 는 첫 번째 매개변수에서 this , *
}
39, & # 39 와 같은 예를 들어 있는 i&; d 표시하십시오 valueForThis& # 39;; 인수 사용됩니다.
콜 () 는 쉼표로 구분된 인수를, ex:
'스칼 (, 범위, arg1 arg2 arg3)'
및 적용 () 는 배열입니다 인수만, ex:
'자마카베리 (범위 [arg1, arg2, arg3])'
다음은 몇 차례 더 사용 예: http://blog.i-evaluation.com/2012/08/15/javascript-call-and-apply/
1 에서 [ 매든 () 는 docs 에 펑크션.프로토티페리애플리 ):
>. '이' 갖는 함수는 주어진 값 및 적용 () 메서드를 호출 >. 인수만 제공한 어레이에서는 (호스트였든 같은 어레이입니다 객체). >. >. # 구문을 >. >. 펑리애플리 (티사리 [아르자이])
2 에서 [ 매든 () 는 docs 에 펑크션.프로토티파스칼 ):
>. 더 콜 () 메서드를 호출 '' 이 갖는 함수는 주어진 값 및 인수만 제공한 것이다. >. >. # 구문을 >. >. 펑스콜 (티사리 [, arg1 [, arg2 [.]]])
[ Function. apply 및 펑크티언스콜 JavaScript 로 ] 에서 3:
>. 적용 () 메서드를 호출 () () 는 동일한 제외한 적용하십시오 필요합니다 >. 어레이입니다 tpc. 두 번째 매개변수입니다. 이 어레이에는 인수에 대해 나타냅니다. >. 타겟대상 메서드입니다.
코드 예제:
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 참 - >.
끝 - < 스니핏 >;!
참조 [ 이 바이올린 ] [4].
근본적인 차이점은 '콜 ()', 'a 적용하십시오 동시에 수용할 수 있는 인수 목록 ()' 의 단일 어레이입니다 인수만 .
39, s, I wrote here& 작은 틱 게시물로의 여기있을:
http://sizeableidea.com/call-versus-apply-javascript/
다른 점은 '는 함수 호출 () 는 함수 ()' 와 ',' 인수만 별도로 적용하십시오 인수만 작업공간에서 어레이입니다.
호츨 차별화합니다 아래와 같은 방법을 적용할 수 있습니다.
문의: 제공하십시오 갖는 함수는 인수가 것이다. 알 수 없는 경우 인수만 통과했거나 전달하십시오 호출하십시오 인수에 사용할 수 있습니다.
적용됩니다. 매입옵션 갖는 함수는 인수가 어레이에서는 제공된다. # 39 적용하십시오 don& 모르는 경우 사용할 수 있습니다, 함수에 대한 전달하십시오 시용되는 인수 할 것 같습니다.
39 의 장점을 있습니다 적용하십시오 호출하십시오 don& 통해 우리는 오직 우리 변경하십시오 인수, t need to a 어레이입니다 수를 변경할 수 있게 된다.
성능에 큰 차이가 없습니다. 하지만 우리는 요청이 다소 빠르게 말할 수 있는 것처럼 비교 평가할 필요가 있기 때문에 적용하십시오 어레이에서는 적용하십시오 메서드입니다.
차이점을 어떻게 전달할 수 있는 방법을 모두 매개변수입니다.
"A 와 c 를 어레이용 쉼표 '는 휴대용 연상기호.
이 때 사용되는 함수 호출 및 적용하십시오 강제로 '가치' 는 모두 처형되었다. 유일한 차이점은 '는' 콜 'n + 1' 이 '와' & # 39, 여기서 1 은 '인수만 n& # 39. 인수의. 단, 다른 하나는 '이' 2 인자 '' 적용하십시오 다른 하나는 인수 어레이입니다.
내가 볼 수 있는 '콜' 는 '우리가' 적용하십시오 위임합니다 다른 기능을 통해 쉽게 할 수 없이 많은 노력을 함수 호출.
'안녕' 을 '우리가 얼마나 쉽게 준수하십시오 위임됩니다 sayHello "사용' 을 (를) '이 아니라', '적용하십시오 호출하십시오 달성하실 매우 어렵다.
비록 '콜' 와 '적용하십시오 아키베 한 곳 이상의 같은 일이 있을 것 같아요', '콜' 하지만 '적용하십시오 사용할 수 없습니다' 만 사용할 수 있습니다. 즉 할 때 상속 및 지원부에서는 매핑하려는 security. 구성자를.
이것은 또 다른 클래스를 작성할 수 있는 기능을 확장하여 클래스뿐만 汲摹窍妨绰 클래스를 만드는.
주된 차이는 있지만, 이제 정상적으로 인수 범위와 호츨 사용하여 변경하십시오 사용하여 해당 인수만 표시됨과 어레이입니다 전화하시기 비헤이비어는 적용하십시오 패스 (pass 솔리드로 어레이에서는). 그러나 그들은 그들이 해야 할 일이 코드에 측면에서 매우 비슷하다.
>. 이 기능은 거의 동일한 하는 동안 구문 >. 근본적인 차이점은 콜 () 은 인수를 적용하십시오 (), >. 한편, 단일 어레이입니다 적용하십시오 목록 () 은 인수.
그래서 확인할 수 있듯이, 우리가 사용하는 경우가 있지만, 여전히 큰 차이가 없는 포지셔닝하십시오 콜 () 또는 적용하십시오 (). 예를 들어 보면 알 수 있는 가장 작고 큰 숫자를 찾는 아래 코드는 배열을 사용하여 충스러웠으니 매든 적용하십시오 방법:
그래서 우리는 이 주된 차이는 반군지역 arguments:< br> just the way;; < br>;
요약:
모두 적용할 수 있는 방법 () '이' call () '와' 에 '펑크션.프로토티페'. 따라서 객체에는 프로토타입 체인을 통해 모든 기능을 사용할 수 있습니다. 모두 실행할 수 있는 '콜 ()' 와 ' ()' 의 값을 갖는 함수는 적용하십시오 지정된 '이'.
주요 차이점은 'the way you call ()' 와 ' ()' 가 적용하십시오 인수의 전달해야 다르거든요. '모두' you call () '와' 적용하십시오 전달하십시오 () 는 이에 따라 우선 인수 객체에는 원하는걸까요 값으로 '이'. 서로 다른 인수만 다음과 같은 방법으로:
예:
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
끝 - < 스니핏 >;!
이러한 기능을 사용해야 하는 이유는?
'이' 이 까다로운 가끔씩 javascript 가치를 창출할 수 있습니다. 이 함수가 실행될 때 아닌 '때' 의 가치를 판결되므로 기능은 바로 이 '우리' 의 경우 데프수드 바인딩하면 defined. 기능은 사용할 수 있습니다 () '이' call () '와' 적용하십시오 적용할 수 있다. 예를 들면 다음과 같습니다.
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
끝 - < 스니핏 >;!