JS で関数を定義する 3 つの方法例を挙げて説明しましょう。 <スクリプト> //メソッド1 関数fn() { console.log('fn が作成されました '); } //メソッド2 var fn2 = 関数() { console.log('fn2 が作成されました'); } //メソッド3 var fn3 = 新しい関数('test'、'console.log(test);'); fn3('fn3 テスト'); コンソール.dir(fn3); console.log(fn3 オブジェクトのインスタンス); </スクリプト> 上記の例を実行すると、関数もオブジェクトであることが証明されます。インスタンスを作成するには、new + コンストラクターを使用できます。3 番目の方法は実行効率が低くなります。 関数プロトタイプチェーン結果から、Function プロトタイプ オブジェクトの __proto__ が Object を指していることがわかります。 JS における関数の分類と呼び出し方法例を挙げて説明しましょう。 <スクリプト> //関数の分類と呼び出し方法 //方法1 通常の標準関数、これはウィンドウを指す 関数fn() { console.log('fn1' + これ); } fn(); //基本的にはwindow.fn(); グローバル関数はwindowのメンバーです //メソッド2オブジェクトメソッドthisは呼び出し元を指しますo var o = { こんにちは: 関数 () { コンソールにログ出力します。 } } o.sayHi(); //モード 3 コンストラクタは新しく作成されたオブジェクトを指し、ここでは star1 を指します。 関数 Star(ユーザー名){ this.username = ユーザー名; } var star1 = 新しい Star('ldh'); //方法 4: イベント関数 this を関数呼び出し元 btn にバインドする var fn = 関数 (){ console.log('btn がクリックされました' + this); } btn.onclick = fn; //ボタンをクリックして関数を呼び出す //方法5 タイマー関数 タイマーは実際にはウィンドウのメンバーなので、これはウィンドウです 関数(){},1000 を設定します。 // タイマーは設定された時間間隔で呼び出されます // 方法 6: 関数をすぐに実行します。これはウィンドウです。方法 1 と同じです (function(){console.log('function performed')})(); //すぐに実行を呼び出す必要はありません</script> 上記の例を通して、著者は基本的に自分が理解している機能の使い方をまとめています。方法4と方法6を比較すると、
これが指す3つの関数を変更するこの指摘はJSにおいて非常に重要な問題です。上記の機能分類では、すでに体系的な分析を行っています。以下では、this ポインターを変更する 3 つの関数に焦点を当てます。 電話 属性継承を実装するには、親クラスのインスタンスをサブクラスのインスタンスに変更します。 <スクリプト> //関数を呼び出す 関数 Father(ユーザー名, 年齢) { this.username = ユーザー名; this.age = 年齢; } 関数 Son(ユーザー名, 年齢, 性別) { Father.call(this, username, age); //親クラスのプロパティを継承します。this.gender = gender; } </スクリプト> 適用する apply と call の違いは、パラメータが配列 (疑似配列) である点です。適用内では、配列は要素に分割されます 主にMathオブジェクトを使用します。Math.max.apply(Math, [4324, 45, 342, 23]) <スクリプト> //関数を適用する var o = { ユーザー名: 'testuser' }; 関数fn(arr) { コンソールにログ出力します。 (i = 0 とします; i < arr.length; i++) { コンソールにログ出力します。 } console.log(これを); } fn.apply(o, [23, 43]); コンソールログ(Math.max(43, 45, 243, 342)); console.log(Math.max.apply(Math、[4324, 45, 342, 23])); </スクリプト> バインド 関数を呼び出さずに、thisの参照のみを変更します バインドされたイベントのthisを変更するために使用します。 <本文> <button>クリックしてください</button> <button>クリックしてください</button> <button>クリックしてください</button> <スクリプト> //バインド関数 //ケース: 確認コードを送信し、3 秒後に再度送信する複数のボタンを実装します。var btns = document.querySelectorAll('button'); (i = 0 とします; i < btns.length; i++) { btns[i].onclick = 関数(){ this.disabled = true; setTimeout(関数() { this.disabled = false; //これをbtnを指すように変更し、3000ms後に実行します}.bind(this), 3000); } } </スクリプト> </本文> 要約するこれで、Javascript の関数分類と this ポイントに関するこの記事は終了です。より関連性の高い JS 関数分類と this ポイントに関するコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: MySQL でトリガーを無効化および有効化するチュートリアル [推奨]
アプリケーションが牛のように遅い理由は数多くあります。ネットワーク、システム アーキテクチャ、または...
数日前にプログラムを書いていたとき、プロンプト情報 (TITLE) を新しい行で囲みたいと思いました...
1. インストール前の準備: 1.1 JDKをインストールするopenjdkをアンインストールする...
ほとんどの場合、MySQL はインストールしたばかりのときは中国語をサポートしません。これはエンコー...
目次502 不正なゲートウェイ エラーの発生1. 502 不正なゲートウェイ エラーとは何ですか? ...
目次序文1.nullでない2. ユニーク3. デフォルト4.主キー自動増分主キー5. 外部キー6.チ...
序文Docker と VS Code を使用すると、ローカル開発環境全体を最適化し、プロジェクトの進...
目次負荷分散負荷分散分類1. DNS 負荷分散2. IP負荷分散3. リンク層の負荷分散4. ハイブ...
言語では、DSL を実装するためにマクロがよく使用されます。マクロを使用すると、開発者は JSX 構...
コードをコピーコードは次のとおりです。 <html> <ヘッド> <m...
ユーザーエクスペリエンスと使いやすさを向上させるために、入力ボックスなど、Web ページでユーザーが...
MySQL は強力なオープンソース データベースです。データベース駆動型アプリケーションの数が増える...
序文同社の Ubuntu サーバーは、さまざまなシステムのディレクトリを異なる論理パーティションに配...
目次1. WeChat Payを開く1.1 アフィリエイト加盟店番号1.2 加盟店番号を追加する1....
フレームセットと本文は同じレベルにあるため、本文にフレームセットを配置することはできません。まずペー...