JavaScriptで関数を呼び出す方法にはどのようなものがありますか?

coldplay.xixi
リリース: 2023-01-05 16:08:39
オリジナル
2503 人が閲覧しました

JavaScript で関数を呼び出す方法は次のとおりです: 1. makeArray 関数をメソッドの 1 つとして使用し、json を使用してオブジェクトを宣言します; 2. [obj.myFunction()] メソッドを使用して構文を呼び出します。

JavaScriptで関数を呼び出す方法にはどのようなものがありますか?

このチュートリアルの動作環境: Windows 7 システム、JavaScript バージョン 1.8.5、DELL G3 コンピューター。

JavaScript で関数を呼び出す方法は次のとおりです。

JavaScript 関数呼び出しのルール 1

明確な所有者なしで関数を呼び出すobject myFunction() などの関数を直接呼び出すと、 this の値がデフォルトのオブジェクト (ブラウザのウィンドウ) になります。

関数呼び出し

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

//creating the object
var arrayMaker = {
    someProperty: 'some value here',
    make: makeArray
};
 
//invoke the make() method
arrayMaker.make('one', 'two');
// => [ arrayMaker, 'one', 'two' ]
// alternative syntax, using square brackets
arrayMaker['make']('one', 'two');
// => [ arrayMaker, 'one', 'two' ]
ログイン後にコピー

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

var arrayMaker = {
    someProperty: 'some value here',
    make: function (arg1, arg2) {
        return [ this, arg1, arg2 ];
    }
};
ログイン後にコピー

JavaScript 関数呼び出しルール 2

obj.myFunction( ) や obj['myFunction' などのメソッド呼び出し構文内]() の場合、この値は obj になります。

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

<input type="button" value="Button 1" id="btn1"  />
<input type="button" value="Button 2" id="btn2"  />
<input type="button" value="Button 3" id="btn3"  onclick="buttonClicked();"/>
 
<script type="text/javascript">
function buttonClicked(){
    var text = (this === window) ? &#39;window&#39; : this.id;
    alert( text );
}
var button1 = document.getElementById(&#39;btn1&#39;);
var button2 = document.getElementById(&#39;btn2&#39;);
 
button1.onclick = buttonClicked;
button2.onclick = function(){   buttonClicked();   };
</script>
ログイン後にコピー

最初のボタンをクリックすると、これはメソッド呼び出しであり、これが属するオブジェクト (ボタン要素) であるため、「btn」が表示されます。(obj.buttonClicked() とは異なり) buttonClicked が直接呼び出されるため、2 番目のボタンをクリックすると「ウィンドウ」が表示されます。 3 番目のボタンと同じで、イベント ハンドラー関数をラベルに直接配置します。したがって、3 番目のボタンをクリックした結果は 2 番目のボタンと同じになります。

jQuery のような JS ライブラリを使用すると、次のような利点があります。イベント処理関数が jQuery で定義されている場合、JS ライブラリは this の値を書き換えて、現在のイベント ソース要素への参照が確実に含まれるように支援します。

//使用jQuery
$(&#39;#btn1&#39;).click( function() {
    alert( this.id ); // jQuery ensures &#39;this&#39; will be the button
});
ログイン後にコピー

関連の無料学習推奨事項: JavaScript ビデオ チュートリアル

以上がJavaScriptで関数を呼び出す方法にはどのようなものがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート