js の呼び出し、適用、バインドの違いと原則、および拡張機能の高度なアプリケーション
まえがき
面接の過程では、新たな質問がたくさん出てきて、新たな知識が増えたり、勉強で見落としていた点を発見したりすることもあります。
2 日前の面接で、面接官は、call、apply、bind の違いについて質問しました。実際には、面接官が何をもっと聞きたいのか、つまり何を拡張しているのかも理解する必要があります。
call
call は、すべての関数から呼び出すことができるメソッドであり、Function.prototype
function# のメソッドです。
- ##関数を呼び出します
- これを最初のパラメータとして変更します
- 2 番目のパラメータの後にパラメータを渡しますパラメータ パラメータのすべての数
function fn1(){ console.log(1); } function fn2(){ console.log(2); } fn1.call(fn2); //输出 1 fn1.call.call(fn2); //输出 2
分析:
fn1## を呼び出す出力の最初の行そして、this
を fn2
の出力の 2 行目に指定します。実際、
call()
の実行が重要であり、これが関係しています。 hereFunction.prototype.call()
のメカニズム。 .call()
の前のコード セグメントを変数として扱い、渡されたコード セグメントを this にポイントするだけです。
、fn1.call は fn2
を指すため、ここで渡される this
が ## である点を除いて、fn2.call()
に対して相対的になります。 #windowUse
function Father(uname,age){ this.uname= uname; this.age=age; } Father.prototype={ constructor:Father, sing:function(){ console.log("唱跳rap"); } } function Son(){ Father.call(this,uname,age) } Son.prototype=new Father();
Function.prototype
Function
- ## のメソッドです。 ##これを変更します
- パラメータ、2 番目のパラメータ以降のすべての配列パラメータを渡します
- call の違いapply 2 番目のパラメータは配列であり、呼び出しは数値の形式でパラメータを渡すことです
let arr=Array.of(2,42,56,89,1,24,56,22) let max=Math.max.apply(Math,arr) console.log(max);
- bindbind もすべての関数から呼び出すことができるメソッドであり、 Function.prototype
- ##パラメータを渡します (2 番目のパラメータ以降のすべての数値パラメータを渡します)
- Return new function
- call と apply の違い
最初の 2 つとの最大の違いは、関数が呼び出されず、変更後に新しい関数が返されることです。
Use
let btns=document.querySelectorAll("button") for(let btn of btns){ btn.onclick=function(){ this.disabled=true; setTimeout(function(){ this.disabled=false; }.bind(this),2000); } }
上記の場合は、タイマーの
thisを変更し、関数を呼び出しません。しかし、実際には、アロー関数を使用すると、アロー関数の
thisがコンテキスト
this に関連しているため、はるかに簡単になります。このケースは、 # を理解するのに役立つことを目的としています。 ##bindの使い方、アロー関数の書き方を下記に貼り付けます
let btns=document.querySelectorAll("button") for(let btn of btns){ btn.onclick=function(){ this.disabled=true; setTimeout(()=>{ this.disabled=false; },2000); } }
推奨チュートリアル:「
JSチュートリアル」
以上がjs の呼び出し、適用、バインドの違いと原則、および拡張機能の高度なアプリケーションの詳細内容です。詳細については、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)

ホットトピック









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

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

フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

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

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

この記事では、ソースマップを使用して、元のコードにマッピングすることにより、Minified JavaScriptをデバッグする方法について説明します。ソースマップの有効化、ブレークポイントの設定、Chrome DevtoolsやWebpackなどのツールの使用について説明します。

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。
