JSのコール方法の役割説明は、分かりやすいです.
1004 ワード
まず、コールの公式解釈を見てみます.「オブジェクトを呼び出す方法は、現在のオブジェクトを別のオブジェクトに置き換えることです.」例を見ます
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つの属性が現れないということは、常識的に推測される.