Ergetソース分析(2):グローバルハッシュベースクラスとグローバル非同期関数オブジェクトインタフェース


ファイル構造
utils/HashObject.tsファイル:
まずファイル構造図を説明します
  • __extendsメソッドは、いくつかのjavascriptファイルで使用される(typescriptコンパイル後もこのようなメソッドを生成してクラス継承を実現する)プロトタイプオブジェクトシミュレーションクラス継承によって使用されます.
  • _defineメソッドは、オブジェクトを正確に追加および変更する属性値を定義し、実質的には
  • である.
  • Object.definePropertyの簡単なパッケージです.具体的にはObjectを参照してください.defineProperty()-MDN
  • IHashObjectグローバルハッシュクラスインタフェース
  • HashObjectグローバルハッシュクラスで、すべてのクラスがこのクラスを継承します.
  • AsyncCallback非同期関数オブジェクトインタフェース.onSuccess()とonFail()の2つのメンバーメソッドが含まれます.
  • $hashCountハッシュカウント
  • erget全体のソースコードに__が見つかりませんでしたextends()と_define()メソッドの呼び出しです.この2つのメソッドの具体的な役割は、元のjavascriptでクラス継承とプライベート属性のクラスの機能を実現することです.ブロガーが本稿を書く際にergetソースコードはほとんどtypescriptを用いて記述されているため,この2つの方法はソースコードの解析において一時的に役に立たない.
    IHashObjectインタフェース
        export interface IHashObject {
            hashCode:number;
        }
        export let $hashCount:number = 1;
        export class HashObject implements IHashObject{
            public constructor() {
                this.$hashCode = $hashCount++;
            }
            $hashCode:number;
            public get hashCode():number {
                return this.$hashCode;
            }
        }

    ここでハッシュクラスの機能はIHashObjectという抽象インタフェースとHashObjectという具体的なクラスに分離され,その役割はオリジナルのjavascriptもハッシュ機能をサポートすることである.このような利点は、typescriptの宣言ファイルにjavascript変数を宣言することで、IHashObjectインタフェースを実現し、javascriptとtypescriptのハイブリッドライターを便利にし、具体的には宣言ファイル-typescript中国語ネットワークを参照することができます.
    HashObjectクラス
        export let $hashCount:number = 1;
        //......
        export class HashObject implements IHashObject{
            public constructor() {
                this.$hashCode = $hashCount++;
            }
            public get hashCode():number {
                return this.$hashCode;
            }
        }

    ここでの作用メカニズムは非常に簡単で、まず$hashCountという初期値が1の変数がハッシュクラスの数を格納し、HashObjectのコンストラクション関数(constructor()は現在のオブジェクトの$hashCode属性を$hashCountに割り当て、$hashCountを自己増加させる.プログラム内のすべてのクラスがHashObjectというベースクラスを継承し、そのコンストラクション関数を呼び出すため、すべてのプログラム内の任意のオブジェクトには一意のメンバー属性$hashCodeがあります.この$hashCodeの役割は、身分証明書番号のような一意の識別に似ており、プログラムの各モジュールで大きな役割を果たしています.たとえば、グローバル・イベント・システムでは、同じオブジェクトが多いイベント・オブジェクトを作成および破棄し続けます.この場合、これらのイベント・オブジェクトを区別するために一意のid ID ID IDが必要です.
    AsyncCallbackインタフェース
        export interface AsyncCallback {
    
            onSuccess: (data:any) => any;
    
            onFail: (error:number,data:any) => any;
    
        }

    成功コールバックと失敗コールバックの2つのメンバーメソッドを含む非同期イベントコールバックオブジェクト.javascriptプログラムの特徴は、非同期タスクを大量に使用することです.一般的に非同期タスクには、成功と失敗の2つのコールバック関数を含むオブジェクトが必要で、タスクの実行が完了した後に対応する関数(onSuccess()またはonFail()を呼び出す必要があります.AsyncCallbackインタフェースは、プログラム全体のアーキテクチャをより明確かつ統一するために、グローバルなオブジェクトの標準を定義します.下一篇:ergetソース分析(1):エントリファイル分析下一篇:ergetソース分析(3):ライフサイクル