国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

erget源碼分析(2):全局哈希基類和全局異步函數對象接口

godlong_X / 2597人閱讀

摘要:異步函數對象接口,包含和兩個成員方法。哈希計數在整個的源碼中都沒有找到和方法的調用,這兩個方法的具體作用是在原生中實現類式繼承和私有屬性一類的功能。

文件結構

utils/HashObject.ts文件:

首先解釋一下文件結構圖

__extends方法 通過原型對象模擬類式繼承,用在一些javascript文件中使用(typescript編譯后也生成一個這樣的方法實現類式繼承)。

_define方法 定義精確地添加和修改對象的屬性值,其實質是對

Object.defineProperty的一個簡單的封裝,具體參考Object.defineProperty()-MDN

IHashObject 全局哈希類接口

HashObject 全局哈希類,所有的類繼承這個類。

AsyncCallback 異步函數對象接口,包含onSuccess()和onFail()兩個成員方法。

$hashCount 哈希計數

在整個erget的源碼中都沒有找到__extends()和_define()方法的調用,這兩個方法的具體作用是在原生javascript中實現類式繼承和私有屬性一類的功能。博主撰寫本文時erget源碼幾乎都是使用了typescript來編寫,所以這兩個方法在源碼的分析中暫時沒有作用。

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標識來區分這些事件對象。

AsyncCallback接口
    export interface AsyncCallback {

        onSuccess: (data:any) => any;

        onFail: (error:number,data:any) => any;

    }

異步事件回調對象,包含成功回調和失敗回調兩個成員方法,javascript程序的特點就是大量地使用異步任務,一般異步任務需要一個包含執行成功和執行失敗這兩個回調函數的對象,在任務執行完畢后去調用對應的函數(onSuccess()或者onFail()),AsyncCallback接口為全局的這一類對象定義一個標準,使得整個程序的架構更清晰和統一。
上一篇:erget源碼分析(1):入口文件分析
下一篇:erget源碼分析(3):生命周期

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/92764.html

相關文章

  • erget源碼分析(1):入口文件分析

    摘要:是一個靜態類,調用方法來初始化各項支持信息。小結通過和這兩個靜態類初始化了項目運行的環境參數,然后創建了屏幕適配器根據不同的適配策略調整。下一篇源碼分析全局哈希基類和全局異步函數對象接口 egret的github地址是https://github.com/egret-labs...,大家自己git clone到本地。 一.路口html文件 用ergetWing新建一個工程,打開根目錄下...

    Rainie 評論0 收藏0
  • erget源碼分析(3):生命周期

    摘要:概述下面我們來分析一下中的生命周期。定義了監聽生命周期的類,這個三個成員方法分別執行暫停繼續和刷新。方法作為橋梁,接收到具體的類型的函數,創建的一個實例作為參數調用它。函數做了兩件事情暫停應用程序,暫停背景音樂和音效的播放。 概述 下面我們來分析一下erget中的生命周期。 src/egret/player/SystemTicker.ts: export namespace li...

    Hydrogen 評論0 收藏0

發表評論

0條評論

godlong_X

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<