移動開發之混合編程第一步:爲JavaScript定義Class-based編程風格

不管是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瞭解更多架構設計

相關文章
相關標籤/搜索