apply メソッドと call メソッドの定義と apply メソッドと call メソッドの違い_JavaScript スキル
動的言語に触れたことがない場合、コンパイル言語の考え方で JavaScript を理解することは魔法のように奇妙に感じられるでしょう。なぜなら、意識的に不可能なことが頻繁に起こり、学習している場合には不合理にさえ感じるからです。 JavaScript という無料で常に変化し続ける言語の過程でこの感覚に出会ったなら、これからは「偏見」を捨ててください。これはあなたにとって間違いなく新しい大陸だからです。さて、もう話はやめて、本題に戻りましょう。まず apply メソッドと call メソッドの定義について説明します。
具体的な内容は以下の通りです:
1. メソッドの定義
call と apply は両方とも、JavaScript エンジンによって内部的に実装される Function.prototype のメソッドに属しているため、各 Function オブジェクトのインスタンス、つまり各メソッドには call 属性と apply 属性があります。これら 2 つのメソッドは同じ機能を持ちますが、使用方法が異なるため、当然ながらその使用法はメソッドに固有です。
呼び出しメソッド:
構文: call([thisObj[,arg1[, arg2[, [,.argN]]]]])
説明:
call メソッドを使用すると、別のオブジェクトに代わってメソッドを呼び出すことができます。 call メソッドは、関数のオブジェクト コンテキストを初期コンテキストから thisObj で指定された新しいオブジェクトに変更します。
適用方法:
構文: apply([thisObj[,argArray]])
argArray が有効な配列でない場合、または引数オブジェクトではない場合、TypeError が発生します。
call と apply の機能は、自分のメソッドを呼び出すのと同じように、他の人のメソッドを借用して呼び出すことです。
それらの違い:
apply: パラメータは最大 2 つだけです - 新しい this オブジェクトと配列 argArray です。このメソッドに複数のパラメーターが渡された場合、もちろん、パラメーターが 1 つしかない場合でも、すべてのパラメーターが配列に書き込まれます。 argArray が有効な配列でない場合、または引数オブジェクトではない場合、TypeError が発生します。 argArray も thisObj も指定されていない場合は、Global オブジェクトが thisObj として使用され、パラメータを渡すことはできません。call: これは直接パラメータ リストであり、主に、現在のこのインスタンス ポインタの一貫性を保つため、または特殊な状況下でこのポインタを変更するために、js オブジェクトのさまざまなメソッドが相互に呼び出すときに使用されます。 thisObj パラメータが指定されていない場合は、グローバル オブジェクトが thisObj として使用されます。
より簡単に言うと、apply と call の関数は同じですが、渡されるパラメーター リストの形式が異なります。たとえば、対応する apply 書き込みメソッド func.call(func1,var1,var2, var3) は:
func.apply(func1,[var1,var2,var3])
add.apply(sub,[3,1]); //add.call(sub,3,1); var a={ n:1, m:2, add:function(){ return this.n+this.m; } } var b={n:3,m:4 } console.log(a.add.call(b));//b.n+b.m=7 function Animal(){ this.name = "Animal"; this.showName = function(){ alert(this.name); } } function Cat(){ this.name = "Cat"; } var animal = new Animal(); var cat = new Cat(); //通过call或apply方法,将原本属于Animal对象的showName()方法交给对象cat来使用了。 //输入结果为"Cat" animal.showName.call(cat,","); animal.showName.apply(cat,[]);

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。
