私は、いつ書き始めたのかさえ思い出せないほど、長い間 JavaScript コードを書いてきました。私は JavaScript がここ数年で達成したことに非常に興奮しています。私は幸運にもこれらの成果の恩恵を受けることができました。私はこの言語に特化した記事、章、本をかなりの数書いてきましたが、まだこの言語について新しいことを発見しています。以下の説明は、私が過去に「ああ!」と思ったプログラミング手法であり、将来遭遇するのを待つのではなく、今すぐ試しるべき手法です。
簡潔な書き方
JavaScript で私が気に入っていることの 1 つは、オブジェクトと配列を生成するための省略法です。以前は、オブジェクトを作成したい場合は、次のようにしていました:
もう 1 つの非常に便利な略語は配列です。配列を定義する従来の方法は次のとおりです:
もう 1 つの非常に優れた省略方法は、三項条件表記を使用することです。このように書く必要はありません...
JSON 形式でデータを保存する
JSON を発見する前は、配列、文字列などの JavaScript のネイティブ データ型にデータを保存するために、あらゆる種類のクレイジーな方法を使用し、分割しやすい記号やその他のわかりにくい厄介なものを混ぜていました。 Douglas Crockford が JSON を発明したとき、すべてが変わりました。 JSON を使用すると、JavaScript 独自の関数を使用してデータを複雑な形式で保存でき、追加の変換を行わずに直接アクセスして使用できます。 JSON は「JavaScript Object Notation」の略称で、上記の 2 つの略語を使用します。したがって、バンドについて説明したい場合は、次のように書くことができます:
JSON は JavaScript で直接使用したり、関数にカプセル化したり、API の戻り値として使用したりできます。これを JSON-P と呼び、多くの API がこの形式を使用します。
スクリプト コードで直接データ プロバイダーを呼び出して JSON-P データを返すことができます:
基本的に、JSON は複雑なデータ構造を記述する最も移植可能な方法であり、ブラウザーで実行できます。 json_decode() 関数を使用して PHP で実行することもできます。 JavaScript の組み込み関数 (Math、Array、String) について私が驚いたことの 1 つは、JavaScript の math 関数と String 関数を勉強した後、これらの関数によってプログラミング作業が大幅に簡素化されることがわかったことです。これらを利用することで、複雑なループ処理や条件判定を省くことができます。たとえば、数値の配列内の最大の数値を見つける関数を実装する必要がある場合、以前は次のようなループを作成していました:
もう 1 つの興味深い関数は Math.max() です。この関数は、パラメータ内の数値の中で最大の数値を返します:
文字列を操作するための非常に便利な関数のもう 1 つのペアは、split() と join() です。最も代表的な例は、ページ要素に CSS スタイルを付加する関数を記述することだと思います。
これは次のようになります。CSS クラスをページ要素にアタッチする場合、それはこの要素の最初の CSS クラスであるか、すでにいくつかのクラスがあり、既存のクラスの後にスペースを追加する必要があります。そしてこのクラスを追加します。このクラスを削除する場合は、クラスの前のスペースも削除する必要があります (これは以前は非常に重要でした。一部の古いブラウザでは、スペースに続くクラスが認識されなかったためです)。
元の記述は次のようになります:
function addclass(elm,newclass){
varclasses = elm.className.split(' ');
classes.push(newclass);
elm.className =classes.join(' ' );
}
イベント委任
Web アプリケーションはイベント駆動型です。私はイベント処理が好きで、特にイベントを自分で定義することが好きです。これにより、コア コードを変更せずに製品を拡張できるようになります。ページ上のイベントの削除に関して、大きな問題 (そして強力な兆候) があります。要素にイベント リスナーをインストールすると、イベント リスナーが動作を開始します。しかし、ページにはリスナーがいることを示す表示はありません。この表現できない問題 (一部の初心者にとっては特に厄介です) と、IE6 などの「ブラウザ」があまりにも多くのイベント リスナーを使用するときに発生するさまざまなメモリの問題のため、イベント プログラミングの使用はできる限り少なくすべきであることを認めなければなりません。それは賢明な行動です。
ということでイベント代表団が登場しました。
ページ上の要素のイベントがトリガーされると、DOM 継承関係では、この要素のすべての子要素もこのイベントを受け取ることができます。このとき、親要素のイベント ハンドラーを使用して処理することができます。個々の子要素で多数のイベント リスナーを使用する代わりに。正確にはどういう意味ですか?たとえば、ページには多くのハイパーリンクがあり、これらのリンクを関数を通じて呼び出す必要があるとします。HTML コードは次のようになります。 >
JavaScript で最も厄介なのは、変数にスコープがないことです。関数内にない変数、関数、配列、オブジェクトはグローバルとみなされます。つまり、このページの他のスクリプトもそれにアクセスして上書きできます。
解決策は、変数を匿名関数内に置き、定義した直後にそれを呼び出すことです。たとえば、次の記述では 3 つのグローバル変数と 2 つのグローバル関数が生成されます:
コードをコピーします
コードは次のとおりです。 🎜>