JSのコール方法の役割説明は、分かりやすいです.


まず、コールの公式解釈を見てみます.「オブジェクトを呼び出す方法は、現在のオブジェクトを別のオブジェクトに置き換えることです.」例を見ます
var x = "      ";    //      x
function a(){         //       a  
    this.x = "        a     ";    
}
//      ,            x  
function f(){       
    alert (this.x);
}
//    “        a     ”
f.call(new a());
f.call(new a()とは、関数fを呼び出されたオブジェクト「new a()」にコピーして解析することであり、実際には、以下のコードの解析結果と同じである.
function a(){
  this.x = "        a     ";
  alert(this.x);    
}
a();
ただ、この時は変数Xの作用範囲が違っています.片言というのは、受け継がれているような味がしますよね.上記の例では、fは完全に構造関数aの実力対象に継承されています.これはa.cal(b)が継承モードであることを説明するのに足りないというなら、もう一つの継承味の使い方を見てみましょう.
function f(){    
    this.a ="a";    
    this.b = function(){    
        alert("b");
    }
}
function e(){    
    f.call(this);     
}
var c = new e();
alert(c.a);  //  a
c.b();    //  b
この例では、ブラウザを使用することができる友達は、eがfの属性と方法を完全に継承していると見られ、そうでなければ説明できない.eには属性aとbが定義されていないので、eのインスタンスオブジェクトcには、この2つの属性が現れないということは、常識的に推測される.