apolloxlua class支持示例

apolloxlua 是一個將js翻譯到lua的工具。web

類:編程

        在apolloxlua.js編程概念裏, 類的可見性是在每一個文件內部,咱們的一個模塊/組件/或者一個咱們能夠稱爲程序集的概念裏, 可能會有大量的類的實體,使用不一樣的抽象來實現,這些類是構成咱們程序的基本單元,  從邏輯設計上來說,類是最小的隔離單位, 這個粒度基於你所使用的架構設計的分割粒度。咱們的類在一個物理文件中對外可見, 須要對外進行包裝,這樣能夠減小全局的內容衝突,實現模塊化。架構

一個應用的結構多是這樣的:app

---- appide

      ---module  ---- classes模塊化

      ---module  -----classes函數

     ......工具

     ----module -----entrypoint測試

如何描述和組織這些文件,是物理設計的範疇,咱們這裏不作任何描述。在web 模式 是不會產生模塊的,全部的classses 若是存在某個命名空間裏, 那麼在內存中的描述是平坦的。在tool模式 若是定義某個類或者模塊存在咱們的代碼文件中,那麼會輸出一個module同步到NameSpace相同的物理目標文件中,做爲模塊導出, 一樣也須要對外包裝。固然這一切都是apolloxlua自動完成的。this

定義一個類:

class Person{
	hellow(){
		console.log("base Person")
		console.log(this.age)
	}
	
	setAge(v) {
		this.age = v;
	}
	
	static staticSmethod (...args) {
		console.log(args[1], args[2]);
		console.log("i am static method");
	}
}

處理多態:

若是這個類沒有構造函數的話, 系統會自動生成一個構造函數。 若是有則不會處理。  overload 咱們不須要那麼多的方法,由於參數是支持可變的。 override  若是子類繼承了父類,那麼子類中和父類相同的方法就會覆蓋父類的方法。繼承:只支持單繼承。在類的內部,全部的方法都是public的。

繼承代碼:

class Person2 extends Person{
	Person2 (name) {
		this.name = name;
		console.log("constructor..");
	}
	
	hellow(){
		console.log("override ");
		console.log("name=" + this.name + ",age=" + this.age);
	}
}

構造函數是和類名相同的一個方法。繼承的話須要使用extends關鍵字和父類的實體名稱。  因爲類的可見性是基於文件的, 因此咱們的繼承對象必定定義在這個物理文件中,否則查找不到類實體的符號。static 的方法是能夠被子類繼承的,static 內部沒法使用this關鍵字。

使用類:

咱們可使用New關鍵字來訪問構造函數,初始化一個實例。

var p1 = Person  >>> New();
var p2 = Person2 >>> New("agent.zy");

p1 >>> setAge(10);
p2 >>> setAge(20);

p1 >>> hellow();
p2 >>> hellow();

本示例結果如圖:

查看並測試  控制檯示例

相關文章
相關標籤/搜索