ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript_javascript スキルの関数の適用と呼び出しについて理解する

JavaScript_javascript スキルの関数の適用と呼び出しについて理解する

WBOY
WBOYオリジナル
2016-05-16 15:50:521336ブラウズ

JavaScript 関数呼び出しは 4 つのモードに分かれています:

1. メソッド呼び出しモード: つまり、オブジェクトにはメソッド属性、Obj.methodName() または Obj[methodName]() が含まれます。
2. 関数呼び出しモード:methodName()。
3. コンストラクター呼び出しモード: new MethodName()。
4. 呼び出しモードを適用して呼び出します: ObjA.apply(ObjB,args[]) または ObjA.call(ObjB,arg1,arg2...)。

関数が呼び出されるとき、仮パラメータを受け取るだけでなく、this と引数も受け取ります。このうち、これは関数オブジェクトのコンテキストであり、引数は実際のパラメータです。
apply と call は同じ関数を実装します。つまり、関数オブジェクト (this が指す参照) のコンテキストを切り替えます。違いは、仮パラメーターが異なることです。 apply は引数または配列であり、call はカンマで区切られた複数の個別の仮パラメータです。

function add(c) 
{ 
  alert(this.a+this.b+c); 
} 
var test={a:1,b:2} 
add.call(test,3);


add.call(test,3); を実行する前は、add と test は両方とも window に属しており、この時点では this は window を指しています。 add.call(test,3); 実行時にaddメソッド本体を入力します。このとき、this.a=test.a、this.b=test.bとなります。および c は仮パラメータとして渡されます。alert() の値は 1 2 3=6 です。 applyにも同じ機能があります。

apply と call による拡張と継承:

function Animal(name){   
   this.name = name;   
   this.showName = function(){   
     alert(this.name);   
   }   
 }   
   
 function Cat(name){  
   Animal.call(this, name); 
 }   
   
 var cat = new Cat("Black Cat");//执行时,Cat函数体的this由window切换为Cat{}, 
// Animal函数体的this.name通过形式参数传入即为Black Cat,最终cat 
 //得到的结果为cat=Cat{name:"Black Cat",showName: function(){ alert(this.name);}, 
 cat.showName();//执行时this由window切换为 
 //Cat{name:"Black Cat",showName: function(){ alert(this.name);} 此时this.name 
 //为this.name=Cat.name,因此为Black Cat。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。