不管是Java,仍是Objective-C,他們都是Class-based編程風格,而JavaScript採用的是Prototype-based編程風格。爲了讓JavaScript程序可以更好的融入原生程序,也讓使用Java/Objective-C的開發者可以沿用原有程序的架構方式,那麼就須要爲JavaScript語言定義一種Class-based編程風格。javascript
因而JSAppSugar便誕生了,JSAppSugar爲JavaScript定義了一套Class-based編程風格,這樣應用即可以沿用原有程序架構,只是將部分類從原生實現變爲JavaScript實現,從而實如今不改變原有程序架構的前提下,爲移動應用開發提供了一種能夠實施的分層方式:將特定功能模塊用JavaScript開發,實現可多端運行的程序模塊。java
這種靈活的混合編程分層設計,能夠讓架構設計更爲自由和靈活的在執行效率(使用原生語言編寫類實現)和開發效率(使用JavaScript編寫類實現)之間作出平衡。git
JSAppSugar定義的Class-based JavaScript編程風格的詳細文檔:JSAppSugar-類體系github
JavaScript類定義例子:objective-c
$class("my.sample.Person",{ name : "Unknown", #init : function(name){ if(name) this.name = name; }, eat : function(food){ return this.name + " is eating "+food; } });
在JavaScript代碼使用:編程
var bob = new my.sample.Person("Bob"); var doing = bob.eat("Salad"); //函數將返回字符串 Bob is eating Salad
在iOS:Objective-C代碼中使用:架構
//初始化JSAppSugar引擎 JSA4Cocoa* jsa = [[JSA4Cocoa alloc]init]; [jsa startEngine]; //使用糖方法建立類對象 id<JSAObject> bob = [jsa newClass:@"my.sample.Person" Arguments:@[@"Bob"]]; //使用糖方法調用對象方法 NSString* doing = [bob invokeMethod:@"eat" Arguments:@[@"Salad"]];
在Android:Java代碼中的使用:函數
//初始化JSAppSugar引擎 JSA4Java jsa = new JSA4Java(); jsa.startEngine(); //使用糖方法建立類對象 JSAObject bob = jsa.newClass("my.sample.Person","bob"); //使用糖方法調用對象方法 String doing = (String)jsObject.invokeMethod("eat","Salad");
在JavaScript代碼中使用原生類、類繼承等更多特性請查看:JSAppSugar-類體系this
關注JSAppSugar瞭解更多架構設計