どんな知識を学ぶにも困難はありますが、それは JavaScript の学習でも同じです。この記事では、JavaScript を学習する際の困難のいくつかをまとめ、それぞれの困難について説明します。
まず、体系的な知識を使って問題を具体化します。学習するときにこれを実行してください。 同じ問題がさまざまな方法で解決できることを発見してください。たとえば、クリック イベントを要素にバインドするには、HTML 要素で
a.onclick=f1; のように関数をイベントに渡してバインドできることがわかると、イベントをバインドする方法は複数あると考えるでしょう。
イベントをバインドするために addachEvent("onclick",f1) メソッドを 3 回使用するのを見ると、イベントをバインドする方法が 3 つ以上あるかもしれないと思うでしょう。そして、1 つのことを行うために 3 つの同じメソッドを使用する理由はありません。それらの間にはいくつかの違いがあるはずです。
では、両者の違いは何でしょうか?イベントをバインドする方法は何通りありますか?メソッドが IE と互換性がないことがわかったとき、それでもなぜだろうと疑問に思うでしょう?私の文法が間違っているのでしょうか?あるいは何が起こっているのか。次々に質問に答えた後、「なんてことだ! JavaScript をいつになったら上手に学べるんだろう?!」と自問する必要があります。
もしかしたら、このままではJSを上手に学ぶのは難しいかもしれません。実際のところ、あなたも彼から学ぶ日はそう遠くないのですが、その方法がわからないだけだということをお伝えしたいのです。どういう理由ですか?理由は、「The Definitive Guide to JavaScript」を読んでいないためです。イベントをバインドする方法は 4 つあり、そのうちの 2 つはすべてのブラウザでサポートされている基本的な方法です。さらに 2 つの高度なメソッドがあり、1 つは W3C 標準メソッド、もう 1 つは IE 標準メソッドです。なぜ IE が高度なメソッドの 1 つと互換性がないのかはわかりますよね。
物事が具体的になったので、イベントをバインドするときにこれら 4 つの方法を考慮するだけでよくなり、それほど多くの疑問を持つ必要はなくなります。また、その出来事を理解したと感じ、次は他の問題も理解できるようになります。もちろん、ジレンマから抜け出したと感じることもあります。
2. JavaScriptの歴史を理解する必要があります
JSの歴史を理解していますか?もちろん、もともと JavaScript と呼ばれていたわけではないし、IE に初めて実装されたわけでもないことは理解しています。はい、それはとても良いことですが、これを知っていてもマスターになれるわけではありません。さらに詳しく理解し、主に機能進化の歴史を理解する必要があります。
上記のように、イベントをバインドするメソッドがこれほどたくさんあるのはなぜでしょうか?要素を取得する方法がこれほどたくさんあるのはなぜですか? document.links[] はより正式ですか?それとも getElementsByTagName('a') の方が正式ですか?どちらの方が互換性が良いのでしょうか?他にいくつの方法がありますか?
一問で頭が痛くなるし、十問で何も始められなくなるし、百問で自分を疑うということを知らなければなりません。千の質問が最終的に「なんてことだ! JavaScript はいつになったら上手に学べるの?」という質問に戻ります。ハハ、それはよくあることだよ。解決策は、それを具体化し、メソッドがいくつあるか、なぜそのメソッドがあるのかを理解することです。 JSは宇宙人が残したものではなく人間が作ったものであり、その人の思考にも限界があるので、これらの問いには答えがあるはずですよね?
document.links[] がレガシードキュメントメソッドであり、そのようなレガシーメソッドが合計 5 つあることがわかったとき。アンカー[]、アプレット[]、フォーム[]、イメージ[]、リンク[]の場合、DOM 標準でそれらが保持されていること、およびすべてのブラウザがそれらをサポートしていることもわかっていれば、いくつかの問題は解消されます。これらはいわゆる「レベル 0 DOM」であるため、別の「ジレンマ」から抜け出すことができます。
3. JS の知識構造は縦横に交差しているため、理解するのがより難しくなります。以下「十字」について説明していきます。
一般知識には水平的な性質がある。例えば、JSは大きな視点で見るとコア部分とクライアント部分に分かれます。これは水平です。コア部分は、字句構造、データ型と値、変数、式と演算子、ステートメント、オブジェクトと配列、関数、クラス、モジュールと名前空間、正規表現に分かれています。これも横向きです。
クライアント部分はBOM、DOM、イベント、スタイル、フォームなどに分けることができ、これらも水平的な知識構造です。
テクノロジーが時間を構造として使用することはほとんどありませんが、ブラウザーの開発は動的であるため、異なる時期のブラウザーでは異なる JS 実装レベルがあり、異なる時点でその時点のブラウザー向けに作成された Web ページは、次の理由により変更できません。技術 JS の開発を考慮する必要はなく、技術の発展に応じてすべての Web サイトを書き換えることは不可能であるため、将来のサポートを維持しながら JS を開発およびアップグレードする必要があります。したがって、より良いメソッドがあったとしても、以前のメソッドを保持する必要があります。たとえば、「レベル 0 DOM」は、新しい W3CDOM でもある程度保持されています。の垂直方向。
知識構造を明確に理解すると、問題を解決するときにどの知識を使用すればよいのかがわかるという利点があります。たとえば、ドキュメント内の要素の位置を取得したい場合は、DOM 内の要素の属性を使用する必要があります。マウス ポインターの位置を取得したい場合は、DOM 内の要素の属性を使用します。イベントオブジェクト。要素への参照を取得するには、レガシー DOM または W3C 標準 DOM メソッドを使用できます。これは良いことです。
実際、上記の質問の核心は体系化と具体化であり、これは学習プロセスにおいて非常に重要であると私は考えています。これは本当に私にとって多くの疑問を解決しました。
どのような知識や技術も同じで、システム全体を体系的に学習していれば、遭遇する問題は徐々に解決され、より深く理解できるようになります。 JavaScript 学習の難しい点など その他の関連記事については、PHP 中国語 Web サイト (www.php.cn) に注目してください。