JavaScript 呼び出し apply は、JavaScript オブジェクトのメソッドを使用して DOM イベントにバインドします。その後、problem_javascript のヒントが示されます。

WBOY
リリース: 2016-05-16 18:01:39
オリジナル
993 人が閲覧しました

まず現象を見てみましょう:

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





< script type="text/javascript">
function init() {
var el = document.getElementById("testDiv"); ;
}
関数 classA(el) {
this.t = 1;
this.clickDele = createDele(this.click, this);
}
classA.prototype = {
click:function() {
alert(this.t);
}
}
function createDele(fun, obj, arg) ) {
return function() {
return fun.call(obj, arg)
}
}




コード 2 の 25 行目: 主に createDele メソッドが追加されます。このメソッドには、それぞれ「実行されるメソッド」である fun、obj、および arg の 3 つのパラメータが含まれています。 「fun の this が指す必要があるオブジェクト」、「fun に渡されるパラメータ」。このメソッドは匿名メソッドを返します。
匿名メソッドは fun メソッドを実行し、fun でこれを obj にポイントし、パラメータを arg として渡し、返される結果を処理します。
プログラムの実行が 15 行目に達すると、createDele メソッドが呼び出され、オブジェクトのメソッドが渡され、パラメータを受け取った後、オブジェクト自体が匿名メソッドを返します。16 行目は、返された匿名メソッドに設定されます。これを変更するコードは、clickDele (匿名メソッド) を DOM イベントにバインドすることで、DOM (DIV) をクリックして匿名メソッドをトリガーします。 (つまり、メソッド a.click) が前に渡され、obj は This が前に渡された (つまり、オブジェクト a) ため、今回は call メソッドを使用して this.click (つまり、メソッド a.click) のポイントを作成します。 obj (つまり、オブジェクト a) に変換すると、最終的なポップアップ結果は 1 になります。結果は正しく、プログラムの本来の目的は達成されています。
匿名メソッドを振り返ると、人々は少し奇妙に感じます。匿名メソッドを呼び出すときに、なぜ this.click (つまり、メソッド a.click) が楽しいのか、なぜ obj (つまり、オブジェクト a) なのかということです。この問題は JavaScript クロージャを使用して説明する必要がありますので、現時点ではここでは紹介しません。興味のある方は今後も注目してください。
信じる信じないにかかわらず、原則と手順には何の問題もありません。 :)
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!