あなたが分かるjsのcall()とappy()の二つの方法の違いと使い方は文語文から遠いです.

4367 ワード

よくなりました.この問題に対して、多くの子供が理解できないか迷っています.確かに遠回りしやすいです.やはりjsだけの対象です.
まあ、あなたが理解するのは正常ではないです.初め:まずコールというものを言います.
NO 1:まず簡単な例を見ます.1+1=2はできますよね?

function add(a,b)  
{  
    alert(a+b);  
}  
function sub(a,b)  
{  
    alert(a-b);  
}  

add.call(sub,1,1);  //     ?  ‘2’       ‘0
  • 1
  • ,
  • 4
  • 5
  • ,
  • ,
  • 8
  • 9,
  • 10
  • 11
  • 1
  • ,
  • 4
  • 5
  • ,
  • ,
  • 8
  • 9,
  • 10
  • 11
  • ここでコードシートを書くと、1+1=2という人がいます.明らかに1-1=0になったという人もいますよね.  実はadd.call(sub,1,1);add(1,1)=2に等しい...
    これは脳の障害ではないですか?余計なことをして、一挙にくそっというcallを作って、毛をかきますか?直接add(1,1)はだめですか?
    よく分かりません.add.call(sub)です.きっとadd直接subの中の引き算です.じゃ、コールをして何をしますか?
    どのような場面でcall、applyというきつい書き方が使われますか?
    じゃ、次はグループの中の仲間からの質問に対して答えます.
  • あれはあなたの脳障害ではないですか?余計なことをして、一挙にくそっというcallを作って、毛をかきますか?直接add(1,1)
     :               ,        
    
                             ?       !
    
  • はよく分かりません.add.call(sub)はきっとadd直接subの中の引き算です.じゃないとコールをして何をしますか?
     :call      :
    
        :
    
    callとappyは関数の実行環境、すなわちthisの方向を再定義するために使用できます.callとappyはいずれも関数を変更するために動作しています.  contextとは文脈であり、換言すれば、関数体内部のthisの方向を変えるためである.何故なら JavaScript  の関数には「定義時文脈」と「実行時文脈」と「文脈は変えられます」という概念があります.
    コール():
  • 文法:call(Obj,[arg 1])
  • 私の口語文:
    call        ,sub      add         ,
    
      :add    , sub    ,  sub  , add    ,  sub     call     , call   add   
    
              sub     ,   sub     add  “  ”     ,    
    
    
    
    ----------
    
    
    function add(a,b)  
    {  
        alert(a+b);  
    }  
    function sub(a,b)  
    {  
        alert(a-b);  
    }  
    
    add.call(sub,1,1); 
     //      sub      add  “  ”    sub alert         “a+b”!    sub,   add ,     !
  • 1
  • ,
  • 4
  • 5
  • ,
  • ,
  • 8
  • 9,
  • 10
  • 11
  • 15
  • ,
  • 1
  • ,
  • 4
  • 5
  • ,
  • ,
  • 8
  • 9,
  • 10
  • 11
  • 15
  • ,
  •  3.         call, apply         ;
    
         :    
    
            function changeStyle(attr, value)
            {     
                this.style[attr] = value; 
             }  
            var box = document.getElementById('box');  
            window.changeStyle.call(box, "height", "200px");
  • 1
  • ,
  • 4
  • 5
  • ,
  • 1
  • ,
  • 4
  • 5
  • ,
  • ここで、changeStyle関数はboxオブジェクトに呼び出されます.thisはboxオブジェクトを指します.
    windowオブジェクトにはstyle属性がありません.アプリの使い方:
    window.chageSteyle.apply(box,[height],‘200 px’);
    現在window対象の「box」というdivの高さは直接200 pxになりました.
    window.chageStyle.call(box,「height」,「200 px」)
    box.style.height="200 px"に相当します.
    ここを見たら分かりますよね.まだ分かりません.
    この用法
    window.chageSteyle.apply(box,[height],‘200 px’);
    この書き方を見たら分かりますよね.えっと、実は書き方と形式が違っています.本質は同じです.
    配列の中だけで、thisを変えるために、
    これも、addの飛天スキルを盗むためですよ!
    括弧内のオブジェクトを括弧外の関数にまとめる属性です.継承と呼ぶことができます.