javascript call()とappy()

2824 ワード

ECMAScriptはFunctionのプロトタイプに二つの方法を定義しました.一つはコール()とappy()です.この2つの方法を使用すると、他のオブジェクト方法と同様に関数を呼び出すことができます.オブジェクトをデータのようなパラメータとして関数に渡し、パラメータを関数に呼び出します.
彼と彼の違いは、コールの最初のパラメータはオブジェクト(または関数)でなければならず、残りのパラメータは任意であることです.applyは通常二つのパラメータしかなく、一つ目は対象または関数でなければなりません.二つ目は下付きのセットです.
たとえば:
function dow(s){
    document.write("<h1>"+s+"</h1>");
}

function Point(x,y){
    this.x=x;
    this.y=y;
    
    this.toString=function(){
        return "("+[x,y]+")";
    }
}

function Vectory(x,y){
    this.x=x;
    this.y=y;
    
    this.toString=function(){
        return "("+[x,y]+")";
    }
}

function add(x,y){
    return new this.constructor(this.x+x,this.y+y);
}

var p=new Point(2,4);//       
var v=new Vectory(3,5);
//call()       call          call     ,  call                      ,   call      


dow(p);
dow(add.call(p,3,5));//      p       add
dow(add.apply(p,[2,6]));//        ,               
&噫13;
&噫13;
.csharpcode.csharpcode pre&唴13;
{啝13
font-size:small;&唵13;
カラー:black;
font-family:consosolas、「Courier New」、courier、monoospace;
background-カラー:&菗菗13;
//white-space:pre;*/&噫13;
}&{13;
.csharp code pre{margin:0 em;}&萶13;
.csharrpcode.rem{color=0000 ff}&菷13;
.csharpcode.kwrd{color=blue 0000 ff}&菗13;
.csharpcode.str{color=blue 006080}&菷13;
.csharpcode.op{color=0000 c 0}&菗13;
.csharpcode.preproc{color=0000 cc 6633;}&菷13;
.csharpcode.asp{background-カラー}と菗13;
.csharrpcode.{啱800000;}&唵13;
.csharpcode.atr{color=0000 ff}&菗13;
.csharpcode.alt&啝13;
{啝13
background-色:菗f 4 f 4;&萶13;
width:100%&菗13;
margin:0 em;
}&{13;
.csharpcode.lnum{color=0000 ff}