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の最適化の方向性について詳しく話しましょう
最近、本番環境のデータベースがログデータを狂ったように書き込み、主キー値のオーバーフローを引き起こし...
ElementUIは、参考のためにテーブルツリーリストの読み込みチュートリアルを実装しています。具体...
RULES を使用すると、テーブルの内部境界のスタイルを制御できます。基本的な構文<TABLE...
以下のように表示されます。 SELECT prod_name,prod_price FROM pro...
Crontab は定期的な実行を設定するために使用されるコマンドです。そのデーモン プロセスは cr...
この記事では、電子商取引プラットフォームで商品の詳細を表示する一般的な例を紹介します。たとえば、ある...
コードをコピーコードは次のとおりです。 wmode パラメータ:透過モード: z-indexを使用し...
目次1. マップ方式2. 応用背景:需要開発プロセス中に、一部のインターフェースは、ページに表示する...
目次SQL ログを表示するにはどうすればいいですか? ? SpringMVC でのパラメータ渡しの説...
CSSを使用してスクロールバーを変更する1.コンテンツがオーバーフローした場合のオーバーフロー設定水...
インターネット技術の発展に伴い、ユーザーはますます Web ページに依存するようになり、Web フロ...
関連文書この記事の一部は、https://www.cnblogs.com/zhongchao666/...
目次1. ピニアとは何ですか? 2. Piniaは使いやすい3. ユーザーエクスペリエンス1. ピニ...
目次1. 効果図(複数列) 2. 通常セレクター: mode = selector、複数列セレクター...
最近、お客様から支援の依頼を受けました。管理されている通信コンピュータ ルームから、サーバーの 1 ...