JavaScript_javascript スキルにおける apply と call の使い方、意味、違い
apply と call の機能は、操作のために関数を別のオブジェクトにバインドすることです。
Function.prototype.apply(thisArg,argArray); という違いがあります。 .call(thisArg[,arg1[,arg2…]]);
関数のプロトタイプからわかるように、最初のパラメーターの名前は thisArg です。つまり、すべての関数内の this ポインターには値 thisArg が割り当てられます。これにより、関数を別のオブジェクトのメソッドとして実行するという目的が達成されます。 thisArg パラメータを除き、どちらのメソッドも Function オブジェクトに渡されるパラメータです。次のコードは、apply メソッドと call メソッドがどのように機能するかを示しています。
function func1(){
this.p="func1-";
this.A=function(arg){
alert (this.p arg);
}
}
//属性 p とメソッド B を使用して関数 func2 を定義します
function func2(){
this.p="func2- " ;
this.B=function(arg){
alert(this.p arg);
}
}
var obj1=new func1();
var obj2= new func2();
obj1.A("byA"); // func1-byA を表示
obj2.B("byB"); // func2-byB を表示
obj1.A.apply( obj2 ,["byA"]); // func2-byA を表示します。ここで、["byA"] は要素が 1 つだけある配列です。以下も同様です。
obj2.B.apply(obj1,["byB"]) ; / / func1-byB を表示
obj1.A.call(obj2,"byA") // func2-byA を表示
obj2.B.call(obj1,"byB"); byB
引数の長さ属性とは異なり、関数オブジェクトには長さ属性もあります。これは、呼び出し時に実際に渡されるパラメーターの数ではなく、関数の定義時に指定されたパラメーターの数を表します。たとえば、次のコードでは 2 が表示されます:
JS マニュアルの呼び出しの説明を見てみましょう:
call method オブジェクトのメソッドを呼び出して、現在のオブジェクトを別のオブジェクトに置き換えます。
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
パラメータ
thisObj
オプション。現在のオブジェクトとして使用されるオブジェクト。
arg1、arg2、、、argN
オプション。一連のメソッドパラメータが渡されます。
説明
call メソッドを使用すると、別のオブジェクトの代わりにメソッドを呼び出すことができます。 call メソッドは、関数のオブジェクト コンテキストを初期コンテキストから thisObj で指定された新しいオブジェクトに変更します。
thisObj パラメーターが指定されていない場合は、グローバル オブジェクトが thisObj として使用されます。
わかりやすく説明すると、実際にはオブジェクトの内部ポインタを変更すること、つまりオブジェクトの this が指す内容を変更することになります。これは、オブジェクト指向の js プログラミングで役立つ場合があります。
インターネット上のコードスニペットを引用すると、実行してみると自然に理由がわかります。
[Ctrl A すべて選択 注: 外部 Js を導入する必要がある場合は、更新して実行する必要があります ]
call 関数と apply メソッド 最初のパラメータは、現在のオブジェクトに渡されるオブジェクトであり、これは関数内にあります。次のパラメータは、現在のオブジェクトに渡されるパラメータです。
次のコードを実行します:
[Ctrl A すべて選択 注: 外部 Js を導入する必要がある場合は、
それぞれ func と var がポップアップしているのがわかります。この時点で、call の各パラメータの意味は理解できました。
apply と call は同じ機能ですが、パラメーターに違いがあります。
最初のパラメータは同じ意味ですが、2 番目のパラメータについては、
apply はパラメータ配列に渡されます。つまり、複数のパラメータが 1 つの配列に結合されて渡され、call は call として使用されます。渡されます (2 番目のパラメーターから始まります)。
たとえば、func.call(func1,var1,var2,var3) に対応する apply の書き込みメソッドは次のとおりです。 func.apply(func1,[var1,var2,var3])
を使用する利点apply は同時に、現在の関数の引数オブジェクトを apply の 2 番目のパラメータとして直接渡すことができます。
javascript apply 使用法 補足
funObj.apply([thisObj[ ,argArray]])
application 現在のオブジェクトを別のオブジェクトに置き換えるオブジェクトのメソッド。
functionObj のメソッドが実行されると、関数内の this オブジェクトが thisObj に置き換えられます。
thisObj オプション。現在のオブジェクトとして使用されるオブジェクト。
argArray オプション。この関数に渡される引数の配列。
//オブジェクトの継承に適用します。プロトタイプを使用し、親オブジェクトのプロパティを子オブジェクトに暗黙的に割り当てます。
function par(name)
{
this.parname=name;
}
function child(chname,parname){
this.chname=chname;
par.apply(this,new Array(parname));
var o=new child("ジョン","ミスター ジョン"); >alert(o.parname ";" o.chname);
//apply は一般的なメソッド呼び出しで使用できます
window.onunload=function()
{
alert(" アンロード イベントは発射されました!");
}
function SayBye(name,toName)
{
alert(name " は bye to " toName);
}
function SayEndBiz( name,toName ,content)
{
alert(name " は " toName" との " content " についての話を終了します);
function addTo(args,func)
{
var oldHandler= window.onunload||function(){};
window.onunload=function()
{
func.apply(window,args); 🎜>}
}
addTo(new Array("John","everyone"),sayBye);
addTo(new Array("John","everyone","会社の開発戦略") ),sayEndBiz)

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

JavaScript文字列置換法とFAQの詳細な説明 この記事では、javaScriptの文字列文字を置き換える2つの方法について説明します:内部JavaScriptコードとWebページの内部HTML。 JavaScriptコード内の文字列を交換します 最も直接的な方法は、置換()メソッドを使用することです。 str = str.replace( "find"、 "置換"); この方法は、最初の一致のみを置き換えます。すべての一致を置き換えるには、正規表現を使用して、グローバルフラグGを追加します。 str = str.replace(/fi

それで、あなたはここで、Ajaxと呼ばれるこのことについてすべてを学ぶ準備ができています。しかし、それは正確には何ですか? Ajaxという用語は、動的でインタラクティブなWebコンテンツを作成するために使用されるテクノロジーのゆるいグループ化を指します。 Ajaxという用語は、もともとJesse Jによって造られました

記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

この記事では、ブラウザでJavaScriptのパフォーマンスを最適化するための戦略について説明し、実行時間の短縮、ページの負荷速度への影響を最小限に抑えることに焦点を当てています。

マトリックスの映画効果をあなたのページにもたらしましょう!これは、有名な映画「The Matrix」に基づいたクールなJQueryプラグインです。プラグインは、映画の古典的な緑色のキャラクター効果をシミュレートし、画像を選択するだけで、プラグインはそれを数値文字で満たされたマトリックススタイルの画像に変換します。来て、それを試してみてください、それはとても面白いです! それがどのように機能するか プラグインは画像をキャンバスにロードし、ピクセルと色の値を読み取ります。 data = ctx.getimagedata(x、y、settings.greasize、settings.greasize).data プラグインは、写真の長方形の領域を巧みに読み取り、jQueryを使用して各領域の平均色を計算します。次に、使用します

この記事では、ブラウザ開発者ツールを使用した効果的なJavaScriptデバッグについて説明し、ブレークポイントの設定、コンソールの使用、パフォーマンスの分析に焦点を当てています。

この記事では、jQueryライブラリを使用してシンプルな画像カルーセルを作成するように導きます。 jQuery上に構築されたBXSLiderライブラリを使用し、カルーセルをセットアップするために多くの構成オプションを提供します。 今日、絵のカルーセルはウェブサイトで必須の機能になっています - 1つの写真は千の言葉よりも優れています! 画像カルーセルを使用することを決定した後、次の質問はそれを作成する方法です。まず、高品質の高解像度の写真を収集する必要があります。 次に、HTMLとJavaScriptコードを使用して画像カルーセルを作成する必要があります。ウェブ上には、さまざまな方法でカルーセルを作成するのに役立つ多くのライブラリがあります。オープンソースBXSLiderライブラリを使用します。 BXSLiderライブラリはレスポンシブデザインをサポートしているため、このライブラリで構築されたカルーセルは任意のものに適合させることができます

データセットは、APIモデルとさまざまなビジネスプロセスの構築に非常に不可欠です。これが、CSVのインポートとエクスポートが頻繁に必要な機能である理由です。このチュートリアルでは、Angular内でCSVファイルをダウンロードおよびインポートする方法を学びます
