ホームページ > ウェブフロントエンド > jsチュートリアル > キャッシュを呼び出してJSメソッドを実装する手順の詳細な説明

キャッシュを呼び出してJSメソッドを実装する手順の詳細な説明

php中世界最好的语言
リリース: 2018-05-14 14:28:19
オリジナル
1364 人が閲覧しました

今回は、JSメソッドを実装するためにキャッシュを呼び出す手順について詳しく説明します。JSメソッドを実装するためにキャッシュを呼び出す際の注意点は次のとおりです。 1.

メソッドのオーバーロードとは

メソッドのオーバーロードとは、クラス内に同じ名前の複数のメソッドを定義することを指しますが、各メソッドには異なるパラメーターの型または数が必要です。

要するに: メソッドのオーバーロードとは、メソッド名と異なる読み込みパラメーターが繰り返されることを意味します。


詳細については左折してください: メソッド オーバーロード/Baidu 百科事典

それでは、js はどのようにこれを実装するのでしょうか? ? ?


2.jsを実装するには?

まず、JavaScriptには関数/メソッドをオーバーロードするという概念がありませんが、jsには引数と呼ばれるメソッドパラメータが用意されており、このパラメータのlength属性を通じてメソッドパラメータの長さを取得できます。今日実装したものは、パラメーターの型ではなく、パラメーターの長さに応じてオーバーロードするだけです~~・長さです。

ダウンロードについてはどうでしょうか。メソッドのパラメーターの長さが利用可能になると、より一般的なスイッチ書き込みメソッドが表示されます:

var seven={
  dosomething:function(){
    switch(arguments.length){
      case 0:
        console.log(arguments.length);
        //dosomething
        break;
      case 1:
        console.log(arguments.length);
        //dosomething
        break;
       case 2:
        //dosomething
        console.log(arguments.length);
        break;
    }
  }
}
ログイン後にコピー

3 . 最適化

すごい〜メソッドが10個あると10個の分岐が必要になります〜そしてメンテナンスが非常に大変です〜各メソッド本体がケースに入っているか、別々に提案して関数として書くこともできます〜

それではこれらは悪いです~維持するのは簡単ではありません、そして維持するのは難しいです十分に高くありません~では、異なるパラメータを持つ同じメソッド名をエレガントに処理するにはどうすればよいでしょうか?


ここで apply メソッドが使用されます。

7 つの addMethod メソッドを書きましょう

var seven = {
  addMethod: function (fname, func) {
    var old = this[fname];
    this[fname] = function () {
      if (arguments.length == func.length) {
        return func.apply(this,arguments);
      }
      if (typeof old == 'function') {
        return old.apply(this, arguments);
      }
    }
  }
};
ログイン後にコピー

変更された 7 は上記の通りで、前に書いたスイッチは次のように実行できます:addMethod方法

seven.addMethod('dosomething', function (x) {
  console.log(arguments.length);
   //dosomething
});
seven.addMethod('dosomething', function (x,y) {
  console.log(arguments.length);
   //dosomething
});
seven.addMethod('dosomething', function (x,y,z) {
  console.log(arguments.length);
   //dosomething
});
ログイン後にコピー

修改后的seven如上,然后之前写的switch就可以这样搞了:

rrreee

咱们要增加方法,只需要调用这个addMethod方法就ok了,是不是觉得简单明了,更加清晰。
那么这段代码的原理呢,其实也很简单,就是缓存旧方法,然后根据参数长度依次apply链式调用,直到找到和当前参数等长的方法~然后进行调用。

funcold rrreee

メソッドを追加したい場合は、addMethod メソッドを呼び出すだけでよいと思いませんか?

つまり、このコードの原理は実際には非常に単純で、古いメソッドをキャッシュし、現在のパラメータと同じ長さのメソッドが見つかるまで、パラメータの長さに応じてチェーン呼び出しを順番に適用してから呼び出すというものです。

funcold は、初めて使用する人を混乱させる可能性がありますが、実際には、JavaScript 言語の機能が巧みに使用されています。 . この古いメソッドは毎回保存され、古いメソッドはその参照を保持します。閉店〜。

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。 推奨読書:

ES6 で全画面スクロール プラグインを実装する手順の詳細な説明

🎜vue+vue-router+vuex の操作権限🎜🎜🎜

以上がキャッシュを呼び出してJSメソッドを実装する手順の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート