ホームページ ウェブフロントエンド jsチュートリアル JavaScript で関数を呼び出す 5 つの方法_javascript スキル

JavaScript で関数を呼び出す 5 つの方法_javascript スキル

May 16, 2016 pm 04:09 PM
javascript 方法 関数の呼び出し

この記事では、JavaScript のさまざまな関数呼び出しの方法と原理を詳しく紹介します。これは、JavaScript 関数を理解するのに非常に役立ちます。

JavaScript、関数を呼び出す 5 つの方法

バグのある JavaScript コードは、JavaScript 関数がどのように機能するかを実際には理解していない結果であることに何度も気づきました (ちなみに、JavaScript には関数型プログラミングの特性が備わっています)。それは私たちの進歩の障害になるでしょう

初心者として、関数呼び出しの 5 つのメソッドをテストしてみましょう。表面的には、これらの関数は C# の関数と非常によく似ていると思いますが、まだ非常に重要な違いがあることがすぐにわかります。これらの違いを無視すると、間違いなくバグの追跡が困難になります。まず、以下で使用する単純な関数を作成しましょう。この関数は、this と 2 つの指定されたパラメーターのみを返します。

コードをコピーします コードは次のとおりです:
<スクリプトタイプ="text/javascript">
関数 makeArray(arg1, arg2){
Return [ this, arg1, arg2 ];
}


最も一般的に使用されるメソッドですが、残念なことに、グローバル関数呼び出し

Javascript を学習したとき、上記の例の構文を使用して関数を定義する方法を学びました。
また、この関数の呼び出しは非常に簡単であることもわかります。必要な作業は次のとおりです。

コードをコピー コードは次のとおりです:
makeArray('1', 'two');
// => [ウィンドウ, '1', '2' ]

ちょっと待ってください、あの窓は何ですか


alert( typeof window.methodThatDoesntExist );
// => 未定義
alert(window.makeArray の種類);
// =>


window.makeArray('one', 'two');
// => [ウィンドウ, '1', '2' ]

最も一般的な呼び出しメソッドは、宣言した関数がデフォルトでグローバルになるため、残念だと言えます。これは、JavaScript では特に当てはまり、JavaScript では使用を避けてください。グローバルメンバーの皆さん、後悔はしないでしょう。

JavaScript 関数呼び出しルール 1
myFunction() など、明示的な所有者オブジェクトなしで直接呼び出される関数では、this の値がデフォルトのオブジェクト (ブラウザーのウィンドウ) になります。

関数呼び出し

メソッドの 1 つとして makeArray 関数を使用して、単純なオブジェクトを作成しましょう。json を使用してオブジェクトを宣言し、このメソッドも呼び出します。


コードをコピー コードは次のとおりです:
// オブジェクトを作成します
var arrayMaker = {
SomeProperty: 'ここに何らかの値',
作成: makeArray
};

// make() メソッドを呼び出します
arrayMaker.make('1', 'two');
// => [ arrayMaker, 'one', 'two' ]
// 角括弧を使用した代替構文
arrayMaker['make']('1', 'two');
// => [ arrayMaker, 'one', 'two' ]

ここで違いを見てください。 this の値はオブジェクト自体になります。なぜ元の関数定義が変更されていないのか、なぜ window ではないのか疑問に思うかもしれません。これが JSavacript で渡される関数です。関数は JavaScript の標準データ型であり、オブジェクトを渡すこともコピーすることもできます。これは、パラメーター リストと関数本体を含む関数全体がコピーされ、arrayMaker 属性に割り当てられてから、 を定義するようなものです。 arrayMaker は次のようになります:


コードをコピー コードは次のとおりです:
var arrayMaker = {
SomeProperty: 'ここに何らかの値',
Make: function (arg1, arg2) {
return [ this, arg1, arg2 ];
}
};

JavaScript 関数呼び出しルール 2

obj.myFunction() や obj['myFunction']() などのメソッド呼び出し構文では、この値は obj

です。

これはイベント処理コードのバグの主な原因です。これらの例を確認してください

コードをコピー コードは次のとおりです:





<スクリプトタイプ="text/javascript">
関数 buttonClicked(){
var text = (this === window) : this.id;
アラート(テキスト);
}
var button1 = document.getElementById('btn1');
var button2 = document.getElementById('btn2');

button1.onclick = buttonClicked;
button2.onclick = function(){ buttonClicked() };

最初のボタンをクリックすると、メソッド呼び出しであるため「btn」が表示され、これが属するオブジェクト (ボタン要素) になります。2 番目のボタンをクリックすると、(obj とは異なり) buttonClicked が直接呼び出されるため、「window」が表示されます。 buttonClicked().) これは 3 番目のボタンと同じで、イベント ハンドラー関数をラベルに直接配置します。そのため、3 番目のボタンをクリックした結果は 2 番目のボタンと同じになります。 jQuery のような JS ライブラリを使用すると、jQuery でイベント処理関数が定義されているときに、JS ライブラリが this の値を書き換えて、現在のイベント ソース要素
への参照が確実に含まれるようにするという利点があります。

コードをコピー コードは次のとおりです:
//jQueryを使用します
$('#btn1').click( function() {
alert( this.id ); // jQuery は 'this' がボタンであることを保証します
});

jQuery はこの値をどのようにオーバーロードしますか? 続きを読む
他の 2 つ: apply() と call()

JavaScript 関数を使えば使うほど、Qjuery がイベント ハンドラーで行うのと同じように、関数を渡して別のコンテキストで呼び出す必要があることがわかり、この値をリセットする必要があることがよくあります。関数は Javascript のオブジェクトでもあり、関数オブジェクトにはいくつかの定義済みメソッドが含まれており、そのうちの 2 つは Set.

を変更するために使用できます。

コードをコピー コードは次のとおりです:
var GasGuzzler = { 年: 2008、モデル: 'ダッジ ベイルアウト' };
makeArray.apply(gasGuzzler, [ 'one', 'two' ] );
// => [ガスガズラー, '1' , '2' ]
makeArray.call(gasGuzzler, 'one', 'two' );
// => [ガスガズラー, '1' , '2' ]

2 つのメソッドは似ています。違いは次のパラメータです。Function.apply() は配列を使用して関数に渡しますが、Function.call() はこれらのパラメータを個別に渡します。 ) ほとんどの場合、より便利です。

JSavacript 関数呼び出しルール 3

関数をメソッドにコピーせずに this の値をオーバーロードしたい場合は、myFunction.apply( obj ) または myFunction.call( obj ) を使用できます。

コンストラクター

JavaScript の型の定義については詳しく説明したくありませんが、現時点では、JavaScript にはクラスが存在せず、カスタム型にはプロトタイプ オブジェクト (次のように) を使用して定義された初期化関数が必要であることを知っておく必要があります。初期化関数の属性) あなたの型も素敵なイズムなので、単純な型を作成しましょう


コードをコピー コードは次のとおりです:
//コンストラクターを宣言します
function ArrayMaker(arg1, arg2) {
This.someProperty = '何でも';
This.theArray = [ this, arg1, arg2 ];
}
// インスタンス化メソッドを宣言
ArrayMaker.prototype = {
SomeMethod: function () {
alert( 'someMethod が呼び出されました');
}、
GetArray: function () {
return this.theArray;
}
};

var am = new ArrayMaker( 'one', 'two' );
var other = new ArrayMaker( 'first', 'next' );

am.getArray();
// => [午前, '1' , '2' ]

非常に重要で注目すべき点は、関数呼び出しの前に表示される new 演算子です。これがなければ、関数はグローバル関数と同様になり、作成するプロパティはグローバル オブジェクト (ウィンドウ) 上に作成されます。それは望ましくありません。別のトピックは、コンストラクターには戻り値がないため、new 演算子を使用するのを忘れると、一部の変数が未定義に割り当てられることになります。このため、コンストラクター関数はそれです。大文字で始めることをお勧めします。これは、電話をかけるときに前の新しい演算子を忘れないように注意するために役立ちます。

この点に注意してください。初期化関数のコードは、他の言語で作成する初期化関数と似ています。

この値は、作成するオブジェクトになります。

JavaScript 関数呼び出しルール 4

MyFunction() などの関数を初期化関数として使用すると、JavaScript ランタイムは新しく作成されたオブジェクトに this の値を割り当てます。

さまざまな関数の呼び出し方法の違いを理解することで、JavaScript コードをバグから遠ざけることができれば幸いです。また、この値の値を常に認識することがバグを回避するための第一歩です。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

WeChatの友達を削除するにはどうすればよいですか? WeChatの友達を削除する方法 WeChatの友達を削除するにはどうすればよいですか? WeChatの友達を削除する方法 Mar 04, 2024 am 11:10 AM

WeChat は主流のチャット ツールの 1 つであり、WeChat を通じて新しい友人に出会ったり、古い友人に連絡したり、友人間の友情を維持したりすることができます。永遠に終わらない宴会など存在しないように、人間同士が仲良くなれば必ず意見の相違が生じます。ある人があなたの気分に極度に影響を与える場合、または仲良くなったときに意見が一致しないことがわかり、コミュニケーションが取れなくなった場合、WeChat の友人を削除する必要がある場合があります。 WeChatの友達を削除するにはどうすればよいですか? WeChat友達を削除する最初のステップ:WeChatメインインターフェースで[アドレス帳]をタップします; 2番目のステップ:削除したい友達をクリックして[詳細]を入力します; 3番目のステップ:上部の[...]をクリックします右隅; ステップ 4: 下の [削除] をクリックします; ステップ 5: ページのプロンプトを理解した後、[連絡先を削除] をクリックします;

トマト無料小説アプリで小説を書く方法. トマトノベルで小説を書く方法に関するチュートリアルを共有します。 トマト無料小説アプリで小説を書く方法. トマトノベルで小説を書く方法に関するチュートリアルを共有します。 Mar 28, 2024 pm 12:50 PM

トマト ノベルは非常に人気のある小説閲覧ソフトウェアです。トマト ノベルでは、新しい小説や漫画を読むことができます。どの小説も漫画もとても面白いです。小説を書きたい友達もたくさんいます。お小遣いを稼いで、小説の内容を編集することもできます。 「テキストに文章を書きたいです。それで、小説はどうやって書くのですか?友達は知らないので、一緒にこのサイトに行きましょう。小説の書き方の入門を少し見てみましょう。」 Tomato Novels を使用して小説を書く方法に関するチュートリアルを共有します。 1. まず、携帯電話で Tomato Free Novels アプリを開き、パーソナル センター - ライター センターをクリックします。 2. Tomato Writer Assistant ページに移動し、次の場所で [新しい本の作成] をクリックします。小説の終わり

Colorful マザーボードに BIOS を入力するにはどうすればよいですか? 2つの方法を教えます Colorful マザーボードに BIOS を入力するにはどうすればよいですか? 2つの方法を教えます Mar 13, 2024 pm 06:01 PM

Colorful マザーボードは中国国内市場で高い人気と市場シェアを誇っていますが、Colorful マザーボードのユーザーの中には、設定のために BIOS を入力する方法がまだ分からない人もいます。この状況に対応して、編集者はカラフルなマザーボード BIOS に入る 2 つの方法を特別に提供しました。ぜひ試してみてください。方法 1: U ディスク起動ショートカット キーを使用して、U ディスク インストール システムに直接入ります。ワンクリックで U ディスクを起動する Colorful マザーボードのショートカット キーは ESC または F11 です。まず、Black Shark インストール マスターを使用して、Black Shark インストール マスターを作成します。 Shark U ディスク起動ディスクを選択し、コンピュータの電源を入れます。起動画面が表示されたら、キーボードの ESC キーまたは F11 キーを押し続けて、起動項目を順次選択するウィンドウに入ります。「USB」の場所にカーソルを移動します。 」と表示され、その後

WeChat で削除された連絡先を回復する方法 (簡単なチュートリアルでは、削除された連絡先を回復する方法について説明します) WeChat で削除された連絡先を回復する方法 (簡単なチュートリアルでは、削除された連絡先を回復する方法について説明します) May 01, 2024 pm 12:01 PM

残念ながら、WeChat は広く使用されているソーシャル ソフトウェアであり、何らかの理由で特定の連絡先を誤って削除してしまうことがよくあります。ユーザーがこの問題を解決できるように、この記事では、削除された連絡先を簡単な方法で取得する方法を紹介します。 1. WeChat の連絡先削除メカニズムを理解します。これにより、削除された連絡先を取得できるようになります。WeChat の連絡先削除メカニズムでは、連絡先がアドレス帳から削除されますが、完全には削除されません。 2. WeChat の組み込みの「連絡先帳復元」機能を使用します。WeChat には、この機能を通じて以前に削除した連絡先をすばやく復元できる「連絡先帳復元」機能が用意されています。 3. WeChat 設定ページに入り、右下隅をクリックし、WeChat アプリケーション「Me」を開き、右上隅にある設定アイコンをクリックして設定ページに入ります。

携帯電話の文字サイズの設定方法(携帯電話の文字サイズを簡単に調整できます) 携帯電話の文字サイズの設定方法(携帯電話の文字サイズを簡単に調整できます) May 07, 2024 pm 03:34 PM

携帯電話が人々の日常生活において重要なツールになるにつれて、フォント サイズの設定は重要なパーソナライゼーション要件になりました。さまざまなユーザーのニーズを満たすために、この記事では、簡単な操作で携帯電話の使用体験を向上させ、携帯電話のフォントサイズを調整する方法を紹介します。携帯電話のフォント サイズを調整する必要があるのはなぜですか - フォント サイズを調整すると、テキストがより鮮明で読みやすくなります - さまざまな年齢のユーザーの読書ニーズに適しています - フォント サイズを使用すると、視力の悪いユーザーにとって便利です携帯電話システムの設定機能 - システム設定インターフェイスに入る方法 - 設定インターフェイスで「表示」オプションを見つけて入力します。 - 「フォント サイズ」オプションを見つけて、サードパーティでフォント サイズを調整します。アプリケーション - フォント サイズの調整をサポートするアプリケーションをダウンロードしてインストールします - アプリケーションを開いて、関連する設定インターフェイスに入ります - 個人に応じて

Win11で管理者権限を取得する方法まとめ Win11で管理者権限を取得する方法まとめ Mar 09, 2024 am 08:45 AM

Win11 管理者権限の取得方法のまとめ. Windows 11 オペレーティング システムでは、管理者権限は、ユーザーがシステム上でさまざまな操作を実行できるようにする非常に重要な権限の 1 つです。ソフトウェアのインストールやシステム設定の変更など、一部の操作を完了するために管理者権限の取得が必要になる場合があります。以下にWin11の管理者権限を取得する方法をまとめましたので、お役に立てれば幸いです。 1. ショートカット キーを使用する Windows 11 システムでは、ショートカット キーを使用してコマンド プロンプトをすばやく開くことができます。

モバイルドラゴンの卵を孵化させる秘密が明らかに(モバイルドラゴンの卵をうまく孵化させる方法を段階的に教えます) モバイルドラゴンの卵を孵化させる秘密が明らかに(モバイルドラゴンの卵をうまく孵化させる方法を段階的に教えます) May 04, 2024 pm 06:01 PM

テクノロジーの発展に伴い、モバイルゲームは人々の生活に欠かせないものになりました。かわいいドラゴンエッグの画像と面白い孵化過程で多くのプレイヤーの注目を集めており、その中でも注目を集めているゲームの一つがモバイル版ドラゴンエッグです。プレイヤーがゲーム内で自分のドラゴンをより適切に育成し成長させることができるように、この記事ではモバイル版でドラゴンの卵を孵化させる方法を紹介します。 1. 適切な種類のドラゴン エッグを選択する プレイヤーは、ゲーム内で提供されるさまざまな種類のドラゴン エッグの属性と能力に基づいて、自分に適したドラゴン エッグの種類を慎重に選択する必要があります。 2. 孵化機のレベルをアップグレードします。プレイヤーはタスクを完了し、小道具を収集することで孵化機のレベルを向上させる必要があります。孵化機のレベルは孵化速度と孵化成功率を決定します。 3. プレイヤーはゲームに参加する必要がある孵化に必要なリソースを収集します。

Oracleバージョンの問い合わせ方法の詳細説明 Oracleバージョンの問い合わせ方法の詳細説明 Mar 07, 2024 pm 09:21 PM

Oracleバージョンのクエリ方法を詳しく解説 Oracleは、世界で最も人気のあるリレーショナルデータベース管理システムの1つで、豊富な機能と強力なパフォーマンスを提供し、企業で広く使用されています。データベースの管理と開発のプロセスでは、Oracle データベースのバージョンを理解することが非常に重要です。この記事では、Oracle データベースのバージョン情報をクエリする方法と具体的なコード例を詳しく紹介します。単純な SQL ステートメントを実行して、Oracle データベース内の SQL ステートメントのデータベース バージョンをクエリします。

See all articles