説明し、通話に適用され、オンラインの多くが、それはよりよく理解するためにあります。だからここに彼らの〜の下に蓄積された投稿
JavaScriptオブジェクトのすべての機能は、コールを持っているとメソッドを適用します
/ *方法* /)(適用 function.apply(thisObj [、argArray]) / *()の呼び出し方法* / function.call(thisObj [、引数1 [、arg2の[、[、... ARGN]]]]) ;
定義:
適用:オブジェクトメソッドの呼び出しを、他のオブジェクトと現在のオブジェクトを置き換えます。例えば:B.apply(A、引数);即ち、Bオブジェクトアプリケーションオブジェクトメソッド。
呼び出し:オブジェクトのメソッドを呼び出すと、別のオブジェクトと現在のオブジェクトを置き換えます。例えば:B.call(A、args1、args2)、すなわち、オブジェクトAコールはBメソッドオブジェクト
ように定義から見て、適用の両方別のオブジェクトと現在のオブジェクトを置き換える、オブジェクトのメソッドを呼び出す呼び出しすることができます。差は、伝送パラメータは、2つのパラメータのみの最大適用することである - 配列は例外TypeErrorの引数がエラーでない場合は、このオブジェクトargArrayの新しい配列を、
コール・複数のパラメータを渡すと、最初のパラメータを適用することができ、オブジェクトが引数リストの後ろにある交換するために使用されます。
基本的な使い方:
関数犬(){ this.name = "犬"; this.showName =関数(){ にconsole.log( "这是一条" + this.name + "!") } } 関数キャット(){ this.name = "CAT"。 // Dog.apply(本) this.showName =関数(){ にconsole.log(this.name + "魚を食べます")。 } Dog.apply(本) }。 VARの猫=新しいキャット() // Dog.call(猫)/ *呼び出し的用法* / cat.showName()/ *这是一条犬* / にconsole.log(cat.name)/ *犬* /
しかし、あなたは別の書き込み位置を適用した場合、結果も異なります。上記のコードとして
私は後ろのコメントアウト適用する場合、)(オープン、その後、実行showNameに適用される結果は次のようになります。犬が魚を食べます
JSは、より多くの知識を整理します後、私は〜自分の降水量の一部を願っています