ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript プロキシ モードの原理は何ですか?

JavaScript プロキシ モードの原理は何ですか?

WBOY
WBOYオリジナル
2022-03-10 15:15:282246ブラウズ

JavaScript におけるプロキシ モードの原理は、オブジェクトへのアクセスを制御するためにオブジェクトの代替または占有者を提供することです。オブジェクトにプロキシを提供することにより、プロキシ オブジェクトは元のオブジェクトへのアクセスを制御します。オブジェクト構造パターンです。

JavaScript プロキシ モードの原理は何ですか?

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

JavaScript のプロキシ モードの原理とは

プロキシとは、対象オブジェクトへのアクセスを制御するために使用されるオブジェクト (プロキシ) です。この目的のためには、最初にターゲット オブジェクトと同じインターフェイスを持つ必要がありますが、ターゲット オブジェクトに変更を加えないという点でデコレータ パターンとは異なります。その目的は、「複雑な」オブジェクトの初期化時間を遅らせることです。 。こうすることで、ターゲット オブジェクトを使用するときに初期化できます (特にシングルトンの場合に重要です)。

オブジェクトの代替またはプレースホルダーを提供して、オブジェクトへのアクセスを制御します。

オブジェクトにプロキシを提供します。プロキシ オブジェクトは、元のオブジェクトへの参照を制御します。プロキシ モードはオブジェクト構造モードです。

プロキシ モードには 2 つのカテゴリがあります。

(1) 通常のプロキシ

(2) 遅延プロキシ

見てください。コード部分:

function getSomething(value) {
    if (value > 10) {
        return value * 2;
    }
}

ここで関数を定義します。渡された値が 10 より大きい場合は、その値の 2 倍を返します。うーん。 。 。かなり優れていますが、欠点もあります。関数の処理が多すぎますが、目的はパラメータの2倍の値を取得することであり、ここで条件判定を行っています。 (もちろん、ここでは何の影響もありません。単純な例を示しているだけです) 私たちが必要とする関数は、値を返すことだけです。

コードの一部を見てみましょう:

function getSomething(value) {
    return value * 2;
}
function proxtGet(value) {
    if (value <10) return;
    return getSomething(value);
}

getSomething の関数を分離し、それを行うために proxyGet を使用すると判断しました。その後、getSomething は独自の処理を安全に行うことができます。

実はこれは一種の保護プロキシであり、対象オブジェクトを保護するためのproxyGetメソッドを提供しており、条件を満たした人だけが操作することができます。

ある日、判断する必要がなくなった場合は、直接 getSomething を呼び出して結果を取得できるので、非常に便利です。

次は仮想エージェントの概要です:

Web 開発において、最もコストがかかるのは間違いなくネットワーク リクエストです。バックグラウンド ファイル情報を表すリストがあるとします。ファイルをパッケージ化するリクエストをバックグラウンドに送信するには、Kirin Arm を使用している場合、そのようなネットワーク オーバーヘッドは悪夢です (この操作のリアルタイム要件がそれほど高くないと仮定すると)。小さなオーバーヘッドを減らすために次のように操作できます:

function sendFile(files) {
    // 做一些操作,然后发送文件信息给后台
    console.log(&#39;发送成功&#39;);
}
var  proxySendFile = (function () {
    var caches = [];
    var timer = null;
    return function (file) {
        caches.push(file);
        if (timer) { return };
        timer = setTimeout(function () {
            sendFile(caches);
            clearInterval(timer);
            timer = null;
            caches.length = 0;
        }, 2000)
    }
}
)()

ここで sendFile はファイル送信操作です。ファイル送信操作をプロキシするために proxySendFIle を使用します。2000 年に開始されるリクエストは 1 つだけです。それが可能だと思いますか? ?たとえあなたのQilin Armが止められなかったとしても、ここではあなたと他の人の間に違いはありません。

関連する推奨事項: JavaScript 学習チュートリアル

以上がJavaScript プロキシ モードの原理は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。