ホームページ > ウェブフロントエンド > jsチュートリアル > Javascript 匿名関数の応用 コードのカプセル化_JavaScript スキル

Javascript 匿名関数の応用 コードのカプセル化_JavaScript スキル

WBOY
リリース: 2016-05-16 18:24:21
オリジナル
917 人が閲覧しました

一部の Javascript ライブラリではこの書き方が見られます:

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

( function(){
//すべてのライブラリ コード
})();

正直に言うと、私にとっては JS 初心者です。これは本当に恐ろしいことです。この関数は基本的にライブラリ全体のコードをすべて囲みます。この書き方は私の常識を完全に超えています。レベルと機能の分割を考慮して分割する必要がありますか?最初はまったく考える勇気もありませんでした。 JS をしばらく使用した後、ある日のカジュアルなチャットで同僚がこの問題について言及し、これが匿名関数と呼ばれていることを知りました。私は匿名関数についてはよく知っています。匿名関数は C#、Python、Lua で使用できます。ネットで調べてみると、非常に詳しい紹介記事がたくさんありましたが、「なぜこのように書かなければならないのか?」という私の心の中の疑問は解決されませんでした。
有名な JS オープン ソース ライブラリ JQuery を見つけました。そのコードは上記の典型的な記述方法です。彼のコードをざっと見たところ、このコードは大きすぎて複雑であることがわかりました。私に適しています。そこで私は、Web ページに Flash コントロールを埋め込むためのシンプルなインターフェイスを提供する、別のオープン ソース JS ライブラリである swfobject に目を向けました。このコードははるかに優れており、非常に短く、すぐに読むことができます。読んでいて、ふと、これはそうだと気づきました。真実は非常に単純で、このように書かれている理由はただ 1 つの目的、つまりカプセル化のためです。
私が初めて JS を学んだとき、JS でプライベート関数と変数を定義する方法を同僚に尋ねました。そのときに得た答えは、「js はオブジェクト指向ではないので、これらの機能は提供しません」でした。結局のところ、厳密なカプセル化は必要ないので、私はこの答えを冷静に受け入れました。今、私はついに、常に方法があり、カプセル化をサポートしていない言語でもカプセル化を実現できることを理解しました。これを実現する方法は、匿名関数を使用することです。コードの一部を見てみましょう:
コードをコピー コードは次のとおりです:

/ /
関数 F(x) の定義
{
this.x = x;
関数 double(x){return x*x;}
this.getDoubleX(){
return double(this.x );
}
}

//
f = new F(12);
alert(f.getDoubleX()); 🎜>

上記のコードは非常に単純なので、私は実行しませんでした。 JS について少しでも知っている人なら、これが JS クラスの定義方法であることを知っています。関数 F はコンストラクターに相当し、関数内の他の定義 (double 関数など) はプライベートであり、外部からアクセスできません。このようにして、プライベート メソッドが偽装して実装されます。 「this.」という接頭辞が付いている他のメンバーはパブリック メンバーと同等であり、外部からアクセスできます。
これらのライブラリがライブラリ コード全体を大きな関数でラップする理由は、内部メソッドと変数をユーザーに公開せず、ユーザーがオープン API にのみアクセスすることを強制するためです。このことから、これらの開発者の善意がわかります。
この時点で、js はどのように継承を実装するのか、もう一度尋ねずにはいられません。今回の答えが前回のような「サポートなし」にならないことを願っています。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート