JS 의 apply 와 call
24902 단어 JavaScriptWeb함수.컨트롤
<code class="hljs javascript has-numbering">JavaScript apply call <span class="hljs-keyword">this</span> , : <span class="hljs-string">' '</span> 。
Web , , , , JavaScript , , apply call 。
, , 。
:
, <span class="hljs-string">' '</span>, , 。 , , , ? <span class="hljs-string">" "</span> , , , , , <span class="hljs-string">' '</span> JavaScript 。
JavaScript :
<span class="hljs-keyword">var</span> xiaoming = {
name:<span class="hljs-string">' '</span>,
fruit:<span class="hljs-string">' '</span>,
makeJuice:<span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span>{</span>
console.log( <span class="hljs-string">' :'</span> + <span class="hljs-keyword">this</span>.name + <span class="hljs-string">' '</span> + <span class="hljs-keyword">this</span>.fruit + <span class="hljs-string">' !'</span>);
}
}
<span class="hljs-keyword">var</span> xiaohong = {
name:<span class="hljs-string">' '</span>,
fruit:<span class="hljs-string">' '</span>
}
xiaoming.makeJuice( ); <span class="hljs-comment">// : : !</span>
xiaoming.makeJuice.apply( xiaohong ); <span class="hljs-comment">// : : !</span>
apply , , <span class="hljs-keyword">this</span>, apply ? , 。
, , apply ? , , : 。
apply ?
<span class="hljs-keyword">var</span> xiaoming = {
name:<span class="hljs-string">' '</span>,
fruit:<span class="hljs-string">' '</span>,
makeJuice:<span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">( water, time )</span>{</span>
console.log( <span class="hljs-string">' :'</span> + <span class="hljs-keyword">this</span>.name + <span class="hljs-string">' '</span> + <span class="hljs-keyword">this</span>.fruit + <span class="hljs-string">' , :'</span> + water + <span class="hljs-string">' mL, :'</span> + time + <span class="hljs-string">' 。'</span>);
}
}
<span class="hljs-keyword">var</span> xiaohong = {
name:<span class="hljs-string">' '</span>,
fruit:<span class="hljs-string">' '</span>
}
<span class="hljs-keyword">var</span> task_info = [ <span class="hljs-number">500</span> , <span class="hljs-number">1</span> ] ; <span class="hljs-comment">// </span>
xiaoming.makeJuice.apply( xiaohong , task_info ) ; <span class="hljs-comment">// : : , :500 mL, :1 。</span>
【 】
apply :
<span class="hljs-number">1</span> thisObject, thisObject <span class="hljs-keyword">this</span> 。
<span class="hljs-number">2</span> , <span class="hljs-string">" "</span>。
, :
: , 。
: , 。
<span class="hljs-string">' , '</span>。
: 。
, <span class="hljs-string">' 500mL , 1 '</span> <span class="hljs-string">' '</span> , , <span class="hljs-string">' '</span> , 。 <span class="hljs-string">' '</span> apply 。
, <span class="hljs-built_in">arguments</span>, , <span class="hljs-built_in">arguments</span> 。 ,<span class="hljs-built_in">arguments</span> <span class="hljs-string">' '</span>( )。 , apply , <span class="hljs-number">2</span> <span class="hljs-built_in">arguments</span> <span class="hljs-string">' '</span>( ) ?
, , , , , 。 , , 。
, , 。
<span class="hljs-keyword">var</span> wang = {
name: <span class="hljs-string">' '</span>,
helpFromXiaohong: <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">( water , time )</span>{</span>
<span class="hljs-comment">// , , apply </span>
<span class="hljs-comment">// ' ' ,</span>
<span class="hljs-comment">// , arguments </span>
<span class="hljs-comment">// , , </span>
<span class="hljs-comment">// , :</span>
xiaoming.makeJuice.apply( xiaohong , <span class="hljs-built_in">arguments</span> ) ;
}
}
wang.helpFromXiaohong( <span class="hljs-number">400</span> , <span class="hljs-number">2</span> ) ; <span class="hljs-comment">// , </span>
<span class="hljs-comment">// : : , :400 mL, :2 。</span>
, , apply ,
<span class="hljs-string">' '</span>, <span class="hljs-built_in">arguments</span> <span class="hljs-number">2</span> 。
<span class="hljs-string">' '</span> :
length ,<span class="hljs-string">' '</span> <span class="hljs-string">' '</span>。
<span class="hljs-number">1</span>,<span class="hljs-number">2</span>,<span class="hljs-number">3</span> 。
apply , 。 :
<span class="hljs-keyword">var</span> w = <span class="hljs-built_in">Array</span>.prototype.shift.apply( <span class="hljs-built_in">arguments</span> );
, <span class="hljs-string">' '</span><span class="hljs-built_in">arguments</span> , w。
【 】
<span class="hljs-number">1.</span> <span class="hljs-built_in">arguments</span> shift ?
<span class="hljs-built_in">arguments</span> <span class="hljs-string">' '</span>, JavaScript ,<span class="hljs-built_in">arguments</span> <span class="hljs-string">' '</span> 。 <span class="hljs-keyword">new</span> <span class="hljs-built_in">Array</span>() , <span class="hljs-string">'Array.prototype'</span>, shift() 。
<span class="hljs-string">" , , ? 。"</span>
, , JavaScript (Douglas Crockfod) , 。
<span class="hljs-number">2.</span> <span class="hljs-keyword">var</span> w = <span class="hljs-built_in">Array</span>.prototype.shift.apply( <span class="hljs-built_in">arguments</span> ); ?
, apply , <span class="hljs-number">1</span> <span class="hljs-keyword">this</span>。 , <span class="hljs-built_in">arguments</span> ( <span class="hljs-string">' '</span> ) <span class="hljs-built_in">Array</span>.prototype.shift <span class="hljs-keyword">this</span>。
, shift 。
:
console.log( [<span class="hljs-string">'A'</span>,<span class="hljs-string">'B'</span>,<span class="hljs-string">'C'</span>].shift() ) ; <span class="hljs-comment">// : A</span>
[<span class="hljs-string">'A'</span>,<span class="hljs-string">'B'</span>,<span class="hljs-string">'C'</span>].shift() , , , <span class="hljs-built_in">Array</span>.prototype.shift , <span class="hljs-keyword">this</span>。 <span class="hljs-keyword">this</span>.length <span class="hljs-keyword">this</span>[<span class="hljs-number">0</span>] ,
, <span class="hljs-built_in">arguments</span> <span class="hljs-built_in">arguments</span>.length <span class="hljs-built_in">arguments</span>[<span class="hljs-number">0</span>] , <span class="hljs-string">' '</span> , , <span class="hljs-built_in">Array</span>.prototype.shift.apply( <span class="hljs-built_in">arguments</span> ); <span class="hljs-number">1</span> 。
<span class="hljs-string">' '</span>, :
<span class="hljs-keyword">var</span> wang = {
name: <span class="hljs-string">' '</span>,
helpFromXiaohong: <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">( water , time )</span>{</span>
<span class="hljs-keyword">var</span> w = <span class="hljs-built_in">Array</span>.prototype.shift.apply( <span class="hljs-built_in">arguments</span> );
console.log( <span class="hljs-string">' '</span> + w + <span class="hljs-string">' mL 。'</span> );
xiaoming.makeJuice.apply( xiaohong , <span class="hljs-built_in">arguments</span> ) ;
}
}
wang.helpFromXiaohong( <span class="hljs-number">400</span> , <span class="hljs-number">2</span> ) ;
> :
<span class="hljs-number">400</span> mL 。
: , :<span class="hljs-number">400</span> mL, :<span class="hljs-number">2</span> 。
> :
<span class="hljs-number">400</span> mL 。
: , :<span class="hljs-number">2</span> mL, :<span class="hljs-literal">undefined</span> 。
【 】
<span class="hljs-number">1.</span> , 。<span class="hljs-built_in">arguments</span> <span class="hljs-string">' '</span> shift , : <span class="hljs-number">400</span> mL 。
<span class="hljs-number">2.</span> , , : : , :<span class="hljs-number">2</span> mL, :<span class="hljs-literal">undefined</span> 。
,shift :<span class="hljs-string">' '</span> <span class="hljs-string">' 1 '</span> 。 , <span class="hljs-keyword">var</span> w = <span class="hljs-built_in">Array</span>.prototype.shift.apply( <span class="hljs-built_in">arguments</span> ); ,<span class="hljs-built_in">arguments</span> ,<span class="hljs-built_in">arguments</span>[<span class="hljs-number">0</span>] <span class="hljs-number">400</span>!
:
apply , <span class="hljs-keyword">this</span> , 。<span class="hljs-string">' '</span> , 。
<span class="hljs-built_in">arguments</span> <span class="hljs-string">' '</span>, <span class="hljs-string">' '</span><span class="hljs-built_in">Array</span>.prototype , 。
<span class="hljs-number">3.</span> , xiaoming.makeJuice.apply( xiaohong , <span class="hljs-built_in">arguments</span> ) ; mL , <span class="hljs-keyword">var</span> w = <span class="hljs-built_in">arguments</span>[<span class="hljs-number">0</span>]; , <span class="hljs-string">' '</span> 。
:
<span class="hljs-keyword">var</span> xiaoming = {
name:<span class="hljs-string">' '</span>,
fruit:<span class="hljs-string">' '</span>,
makeJuice:<span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">( water, time )</span>{</span>
console.log( <span class="hljs-string">' :'</span> + <span class="hljs-keyword">this</span>.name + <span class="hljs-string">' '</span> + <span class="hljs-keyword">this</span>.fruit + <span class="hljs-string">' , :'</span> + water + <span class="hljs-string">' mL, :'</span> + time + <span class="hljs-string">' 。'</span>);
}
}
<span class="hljs-keyword">var</span> xiaohong = {
name:<span class="hljs-string">' '</span>,
fruit:<span class="hljs-string">' '</span>
}
<span class="hljs-keyword">var</span> wang = {
name: <span class="hljs-string">' '</span>,
helpFromXiaohong: <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">( water , time )</span>{</span>
<span class="hljs-keyword">var</span> w = <span class="hljs-built_in">arguments</span>[<span class="hljs-number">0</span>];
console.log( <span class="hljs-string">' '</span> + w + <span class="hljs-string">' mL 。'</span> );
xiaoming.makeJuice.apply( xiaohong , <span class="hljs-built_in">arguments</span> ) ;
}
}
wang.helpFromXiaohong( <span class="hljs-number">400</span> , <span class="hljs-number">2</span> ) ;
, : apply , <span class="hljs-number">1</span> <span class="hljs-literal">null</span>, , <span class="hljs-string">' '</span> <span class="hljs-keyword">this</span>, , ? <span class="hljs-literal">null</span>.name 。 , 。 : 。
, , , , , , 。 , , :<span class="hljs-string">' ? , 。'</span> , , , , , , 。
, xiaohong , xiaohong , <span class="hljs-literal">null</span> 。
xiaoming.makeJuice.apply( xiaohong , <span class="hljs-built_in">arguments</span> ) ;
:
xiaoming.makeJuice.apply( <span class="hljs-literal">null</span> , <span class="hljs-built_in">arguments</span> ) ;
:
<span class="hljs-keyword">var</span> name = <span class="hljs-string">' '</span>;
<span class="hljs-keyword">var</span> fruit = <span class="hljs-string">' '</span> ;
, :
<span class="hljs-number">400</span> mL 。
: , :<span class="hljs-number">400</span> mL, :<span class="hljs-number">2</span> 。
, <span class="hljs-literal">null</span>, , <span class="hljs-keyword">this</span> , window( Chrome )。 , <span class="hljs-keyword">this</span>, apply , <span class="hljs-literal">null</span> , <span class="hljs-string">' '</span> , 。
, apply , :
<span class="hljs-keyword">this</span>, , thisObj , 。 <span class="hljs-string">' '</span> , ?
<span class="hljs-string">' '</span> , , apply , <span class="hljs-literal">null</span> thisObject。 <span class="hljs-string">' '</span>, , , 。
: <span class="hljs-string">' '</span>, 。
: <span class="hljs-built_in">Math</span>.max( <span class="hljs-number">2</span> , <span class="hljs-number">10</span> , <span class="hljs-number">6</span> , <span class="hljs-number">1</span> ); , [<span class="hljs-number">2</span>,<span class="hljs-number">10</span>,<span class="hljs-number">6</span>,<span class="hljs-number">1</span>] 。
- <span class="hljs-built_in">Math</span>.max([<span class="hljs-number">2</span>,<span class="hljs-number">10</span>,<span class="hljs-number">6</span>,<span class="hljs-number">1</span>]); <span class="hljs-literal">NaN</span>。 <span class="hljs-built_in">Math</span>.max [<span class="hljs-number">2</span>,<span class="hljs-number">10</span>,<span class="hljs-number">6</span>,<span class="hljs-number">1</span>] number。
- :
<span class="hljs-keyword">var</span> test_array = [<span class="hljs-number">2</span>,<span class="hljs-number">10</span>,<span class="hljs-number">6</span>,<span class="hljs-number">1</span>];
<span class="hljs-built_in">Math</span>.max( test_array[<span class="hljs-number">0</span>] , test_array[<span class="hljs-number">1</span>] , test_array[<span class="hljs-number">2</span>] , test_array[<span class="hljs-number">3</span>] );
, , ^_^~~
[ ] [ ],[ ] [ ].......apply , , :
<span class="hljs-keyword">var</span> test_array = [<span class="hljs-number">2</span>,<span class="hljs-number">10</span>,<span class="hljs-number">6</span>,<span class="hljs-number">1</span>];
console.log( <span class="hljs-built_in">Math</span>.max.apply( <span class="hljs-literal">null</span> , test_array ) ); <span class="hljs-comment">// :10 </span>
:<span class="hljs-number">10</span>, , 。
, ? apply , :
xiaoming.makeJuice( <span class="hljs-built_in">arguments</span> ) ;
:
<span class="hljs-keyword">var</span> wang = {
name: <span class="hljs-string">' '</span>,
helpFromXiaohong: <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">( water , time )</span>{</span>
<span class="hljs-keyword">var</span> w = <span class="hljs-built_in">arguments</span>[<span class="hljs-number">0</span>];
console.log( <span class="hljs-string">' '</span> + w + <span class="hljs-string">' mL 。'</span> );
xiaoming.makeJuice( <span class="hljs-built_in">arguments</span> ) ;
}
}
helpFromXiaohong( ), xiaoming.makeJuice( )。 <span class="hljs-string">' '</span> 。 , 。
...
? call !
,call apply , call , <span class="hljs-number">1</span> thisObject, <span class="hljs-number">2</span> <span class="hljs-string">' '</span> 。
:
apply , :
<span class="hljs-keyword">var</span> task_info = [<span class="hljs-number">400</span>,<span class="hljs-number">2</span>];
xiaoming.makeJuice.apply( xiaohong , task_info ) ;
call , :
xiaoming.makeJuice.call( xiaohong , <span class="hljs-number">400</span> , <span class="hljs-number">2</span> )
, call apply , <span class="hljs-built_in">Function</span>.prototype call。JavaScript , , JavaScript call , apply , apply call , 。
, :
, , 。
, ( :apply ),
, , (apply) , apply 。
, , , , , (call), , call 。
<span class="hljs-string">" , ! ?!"</span>
<span class="hljs-string">" , , , 。"</span>
<span class="hljs-string">" ! !"</span>
<span class="hljs-string">" , , 。"</span>
, , , 。
, , , , , call 。
【 】
, apply , , <span class="hljs-built_in">arguments</span> , apply , apply call 。
, 。</code>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.