1. 概要
認証コードは次のとおりです。 var f = 関数() { console.log('これはf関数です'); } // 関数もオブジェクトです console.log(f instanceof Object); // true // 関数は Functionconsole.log(f instanceof Function); の型のオブジェクトです。 // true 1.1 Functionコンストラクタを使用して関数を作成する
文法構造は次のとおりです。 var functionName = 新しい関数 ([arg1[, arg2[, ...argN]],] 関数本体)
サンプルコードは次のとおりです。 // パラメータのない関数 var fun = new Function('console.log("This is a function")') fun() // これは関数です // 1 つのパラメータを持つ関数 var fun = new Function('a', 'console.log("この関数は 1 つのパラメータを取ります: " + a)') fun(100) // この関数は1つのパラメータを取ります: 100 // 2つのパラメータを持つ関数 var fun = new Function( 「a, b」、 'console.log("これは 2 つのパラメータ " + a + " と " + b" を持つ関数です);', ) fun(100, 200) // これは100と200の2つのパラメータを持つ関数です 実際の開発では、まったく読みにくいため、この方法で関数を作成することは通常ありません。 1.2 機能と目的
認証コードは次のとおりです。 console.log(関数インスタンスの関数) //true console.log(関数インスタンスオブオブジェクト) //true console.log(Object インスタンス of Object) //true console.log(オブジェクトインスタンス関数) //true 2. コンストラクター2.1 カスタムのその他の関数コンストラクター (コンストラクターまたはオブジェクト テンプレートとも呼ばれます) は、オブジェクトがインスタンス化されるときに呼び出されるオブジェクト内のメソッドです。 コンストラクターを作成するための構文は次のとおりです。 関数Person(){ this.property名 = プロパティ値; this.メソッド名 = 関数() { メソッド本体} var person = 新しい Person(); ここで、 次のコードは、コンストラクターを作成する方法と、コンストラクターを通じてクラスをインスタンス化する方法を示しています。 // カスタムコンストラクター -> 関数: オブジェクトを作成する function Person(name, age, sex) { this.name = 名前 this.age = 年齢 this.sex = セックス this.print = 関数(){ console.log(名前 + '今年' + 年齢 + '年齢と性別' + 性別) } } // お菓子のボウルを作成する var t = new Person('a bowl of sweets', 18, 'female') hong.print() // Yiwantian は 18 歳で女性です // Yiwanzhou を作成します var z = new Person('Yiwanzhou', 20, 'male') dong.print() //お粥一杯、20歳、男性 2.2 オブジェクトのコンストラクタプロパティ
すべてのオブジェクトはプロトタイプからコンストラクター プロパティを継承します。 このプロパティの値は関数名を含む文字列ではなく、関数自体への参照であることに注意することが重要です。 サンプルコードは次のとおりです。 // Yiwan Zhou を作成 var z = new Person('Yiwan Zhou', 18, '男性') // Person コンストラクタのオブジェクトかどうかを確認します console.log(z.constructor === Person) 2.3 コンストラクタと関数まずはコードを見てみましょう 関数Hero() { // 関数として使用 var v = 100 // ローカル変数 // コンストラクターとして使用 this.set = function (value) { v = 値 } this.get = 関数 () { リターンv } } このコードでは、まず関数を定義します。この関数はコンストラクターでもあり、もちろんオブジェクトでもあります。 3つの意味があるので、以下のように3つの操作があります。
サンプルコードは次のとおりです。 // Hero() を直接呼び出す // コンストラクターを通じてオブジェクトを作成する var hero = new Hero() // オブジェクトとして扱い、プロパティとメソッドを追加します。Hero.n = 'A bowl of Zhou' console.log(Hero.n) // 一杯の周 3. Functionオブジェクトのプロパティとメソッドグローバル 3.1長さ属性長さ属性は、関数の仮パラメータの数を示します。サンプル コードは次のとおりです。 // 2つの空の関数を定義します。 function fun(a, b, c, d) {} 関数 fn() {} // 長さプロパティをテストする console.log(fun.length) // 4 console.log(fn.length) // 0
構文の形式は次のとおりです。 func.apply(thisArg、[argsArray]) を適用します。 パラメータの説明は次のとおりです。
戻り値は、指定された this 値と引数を使用して関数を呼び出した結果です。 次のコードは、apply() メソッドの使用方法を示しています。 // 関数を定義する function fn(a) { console.log('これは ' + a です) } fn.apply(null, ['function']) // これは関数です // 上記の呼び出しは次のメソッドと同等です fn('function') // これは関数です 3.2call() メソッドこのメソッドの構文と機能は 次のコードは call() メソッドの使用方法を示しています。 関数fn(a) { console.log('これは ' + a です) } fn.call(null, 'function') // これは関数です // 上記の呼び出しは次のメソッドと同等です fn('function') // これは関数です
パラメータの説明は次のとおりです。 関数.bind(thisArg[, arg1[, arg2[, ...]]]) パラメータ: 戻り値は、指定された **this** 値と初期パラメータを持つ元の関数のコピーです。 次のコードは bind() メソッドを示しています。 // 関数を定義する var fun = function (a, b) { console.log('最初のパラメータの値は:' + a + '2番目のパラメータの値は:' + b) } // fun() を呼び出す fun(10, 20) // 最初のパラメータの値は: 10 2 番目のパラメータの値は: 20 // バインドされた関数を作成する var fn = fun.bind(null, 100, 200) // デフォルトのパラメータ値を持つ関数 // 実際のパラメータを記述せずに新しく作成された関数を呼び出す fn() // 最初のパラメータの値は: 100 2 番目のパラメータの値は: 200 4. 引数オブジェクト
パラメータも再定義できます。オブジェクトには次の 2 つのプロパティもあります。
次のコードは、このオブジェクトの使用方法を示しています。コードは次のとおりです。 /* * 引数オブジェクトは、関数本体内に存在する特別なオブジェクトです。 * 引数オブジェクトは配列のようなオブジェクトです * 引数オブジェクトは関数に渡される実際のパラメータに対応します */ // 関数を定義する var fun = function () { console.log(引数) // arguments.callee は、引数が属する現在実行中の関数を指します。 //このプロパティに括弧を追加すると、呼び出しを意味します。 arguments.callee === fun はtrueと評価されるので console.log(引数.呼び出し先) // arguments.length 関数に渡される引数の数。 console.log(引数の長さ) } 楽しい(1, 2, 3, 4, 5) コード実行結果は次のとおりです。 [引数] { '0': 1、 '1': 2、 '2': 3、 '3': 4、 '4': 5 } [機能:楽しい] 5 関数のオーバーロードを完了するために渡されるパラメータの数を決定するには、arguments.length プロパティを使用します。サンプル コードは次のとおりです。 // シミュレーション関数のオーバーロード function add() { // パラメータの数を記録する var len = arguments.length // オーバーロードされた関数をシミュレートするために渡されるパラメータの数を決定するには、switch case ステートメントを使用します switch (len) { ケース2: 引数[0] + 引数[1]を返す 壊す ケース3: 引数[0] + 引数[1] + 引数[2]を返す 壊す ケース4: 引数[0] + 引数[1] + 引数[2] + 引数[3]を返す 壊す デフォルト: 壊す } } コンソール.log(add(1, 2)) // 3 コンソール.log(add(1, 2, 3)) // 6 コンソール.log(add(1, 2, 3, 4)) // 10 5. まとめこの記事では、コンストラクターを作成する方法、コンストラクターを介してオブジェクトをインスタンス化する方法、および Function オブジェクトが提供するメソッドとプロパティについて説明します。使い方と最後に Arguments オブジェクトを紹介します。 JS 関数とコンストラクタに関するこの記事はこれで終わりです。より関連性の高い JS 関数とコンストラクタのコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: MySQLにおける遅いSQLの最適化の方向性について詳しく話しましょう
1. はじめにSelenium を使用して Web サイトからデータをスクレイピングしたいのですが、...
HTML は、Baidu 百科事典のナビゲーション ドロップダウン メニュー機能を模倣します。具体的...
中国語ドキュメント: https://router.vuejs.org/zh/ Vue Router...
ここでは、v3 のインストールと使用にのみ焦点を当てます。v2 について学びたい場合は、公式 Web...
目次導入インストールと使用方法文章の相違点と類似点の簡単な比較VuexとPiniaの長所と短所Pin...
目次1. エラーメッセージ2. エラーの原因3. 解決策1. エラーメッセージ1. インストール後、...
会社のビジネス要件により、次の図の赤い領域の効果を達成する必要があります。 効果の説明: 1. 赤い...
Linux での MySQL データベースのマスター/スレーブ同期構成の利点は、この方法をバックアッ...
フォーム内の visibility=hidden および display=none のフォーム要素は...
目次1. 準備1. 環境を整える2. インストール方法3. ネットワークカードの構成2. インストー...
グループを作成グループ化は、SELECT ステートメントの GROUP BY 句で設定されます。例:...
目次1. はじめに2. 初期ビュー(I) Vueの概念を理解する(II) MVVMアーキテクチャ(I...
プロジェクト ページの作成中に、子要素が親要素の透明度を継承するという問題に遭遇しました。多くのドキ...
序文: Vue3 がリリースされてからかなり経ちますが、最近、会社のプロジェクトでVue3 + Ty...
この記事では、テーブル内のデータを追加、削除、変更するためのvue要素の具体的なコードを参考までに共...