apply() 関数と call() 関数の詳細な紹介
この記事では、apply() 関数と call() 関数について詳しく説明します。これには一定の参考値があります。必要な友人は参照してください。お役に立てば幸いです。
関数の適用と呼び出しの概要
適用と呼び出しに関しては、まず関数の起源について話さなければなりません
Javascript 関数は両方ともオブジェクトです
他の JavaScript オブジェクトと何ら変わりはありません。各関数には 2 つの非継承メソッド apply() と call() が含まれており、どちらも関数
を間接的に呼び出すことができます。例:
function f() { console.log(1); } f.call(); //1 f.apply(); //1
そして、これら 2 つのメソッドそれぞれのメソッドで表示が可能になります。指定された関数呼び出し後の this 値。
thisの値については、実行コンテキストステージに入るときにthisの値が確定するため、わかりにくいです。ただし、apply() および call() を通じて関数が呼び出されるときに、必要な this 値を明示的に指定できます。
それでは、apply メソッドと call メソッドは何に使用されるのでしょうか?
任意の関数は、呼び出されるときにこの値を割り当てることができ、this が指すオブジェクトのメソッドとして呼び出すことができます。
つまり、任意の関数を任意のオブジェクトから呼び出すことができ、これが apply メソッドと call メソッドの最終目標です。
理解するために使用例を見てみましょう
function Animal() {}; Animal.prototype = { constructor: Animal, other: function() { console.log('这是一只' + this.name); } } var animal = new Animal(); //定义一个对象 var dog = { name: '狗' }; //我的dog对象想使用Animal函数的other方法怎么办,使用call或apply animal.other.call(dog); animal.other.apply(dog);
上記では、animal.other (これが何であるか考えてみてください。そう、本質的には関数です) を犬オブジェクトのメソッドとして使用しています。電話。
//设置一个类数组对象 var arrLike = { 0: '我是apply', 1: '我是call', length: 2 } //将Arrar的slice函数的this显式指向arrLike,并将0作为参数传入slice函数 var newArr = Array.prototype.slice.call(arrLike, 0); //等价于 arrLike.slice(0); console.log(newArr);
apply() と cal() の場合、それらに渡される最初の引数はすべて this の値になります、渡された引数が元の値であっても
、null、未定義。そして、渡された最初の実パラメータが未定義または null の場合、ES3 および非厳密モードのグローバル オブジェクトに置き換えられ、他の元の値は対応するラッパー オブジェクト
に置き換えられます。
平たく言えば、Js は apply/call の最初のパラメータが何であるかを気にしません。関数は引き続き呼び出されますが、呼び出しでエラーが報告されるかどうかは別の問題です。
var str = '我是一个函数'; //将字符串传入,但是String对象无法调用slice属性 报错 Array.prototype.pop.call(str);
これら 2 つのメソッドを深く覚え、どのような場合にこれら 2 つのメソッドを使用するかを説明するために、いくつかの一般的な使用法をリストします。
まず、今のところ、これら 2 つのメソッドのパフォーマンスの違いはほとんど無視されています。
apply() メソッドは、2 番目のパラメータを順番に渡すのに適しており、パラメータは不確かです。関数の引数などの apply メソッドを使用してください。この配列のようなオブジェクトパラメータとして渡すのに非常に適しています。
function A(a, b, c) { console.log(a, b, c); } var fn = (function(func, b, c) { var args = arguments; return () => { func.apply(null, args); } }(A, 66, 99)); fn();
別の例は、要素を配列に追加することです
var arr1 = [1, 2, 3]; var arr2 = [66, 99, 131]; Array.prototype.push.apply(arr1, arr2); console.log(arr1);
同様に、arr2 配列をパラメーターとして渡します。
互いに関連性のない順序なしパラメータの場合は、call()
を使用して配列の最大値と最小値を取得します
var arr = [0, 1, 2, 3, 4]; //获取最大数 var max1 = Math.max.apply(Math, arr), max2 = Math.max.call(Math, 0, 1, 2, 3, 4), //获取最小数 min1 = Math.min.apply(Math, arr), min2 = Math.min.call(Math, 0, 1, 2, 3, 4); console.log(max1, max2, min1, min2);
arr 自体には Math メソッドはありませんが、call または apply を使用してそのメソッドを使用できます。
オブジェクトの特定のタイプを決定します。
//验证对象的具体类型 var arr = []; var type = Object.prototype.toString.call(arr); console.log(type);// [object Array]
取得時期typeof を使用すると、結果はすべてオブジェクトであり、どの型であるかを判断することはできません。したがって、Object.prototype.toString.call() を使用して特定の型を取得できます。もちろん、toSting() メソッドがオーバーライドされていないことが前提です。
配列のようなオブジェクトを実際の配列に変換します。通常は Array.prototype.slice.call( ) を変換します
var arrLike = { length: 3, 0: '值1', 1: '值2', 2: '值3' } var newArr = [].__proto__.slice.call(arrLike); var type = Object.prototype.toString.call(newArr); console.log(newArr, type); //[ '值1', '值2', '值3' ] '[object Array]'
もちろん、splice,concat は配列のようなオブジェクトを配列に変換することもできます
.
これは 配列のようなオブジェクトの普及です
。
インデックスを介して要素にアクセスし、長さ属性を持つ
つまり、2 つの条件を満たす必要があります。1. シリアル番号を使用して属性を定義する。2. 長さ属性を持つ。属性値は要素の数である。
連番を使用する場合 属性を定義する場合は、0 から順に属性を定義することを推奨します。それ以外の場合、配列要素は空になります
var arrLike = { length: 3, 0: '值1', 1: '值2', 3: '值3' } var newArr = [].__proto__.slice.call(arrLike); var type = Object.prototype.toString.call(newArr); console.log(newArr, type); //[ '值1', '值2', empty] [object Array]
この記事はここで終了です。さらに興味深いコンテンツについては、PHP 中国語 Web サイトの JavaScript ビデオ チュートリアル 列に注目してください。
以上がapply() 関数と call() 関数の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホット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)

ホットトピック









WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが
