javascript class支持大部分C++功能啦
2013-12-07 21:33
281 查看
https://github.com/nooning/JSClass
最新JAVASCRIPT 支持多重继承,支持虚函数,支持private,protected,public,支持static,甚至可以非常简单的使用singleton 建立各种design patten.
最新JAVASCRIPT 支持多重继承,支持虚函数,支持private,protected,public,支持static,甚至可以非常简单的使用singleton 建立各种design patten.
Class({ Name:"Test", Bases:{Singleton:{Namespace:Class}}, Public:{test:function(){}} }) Test.Instance.test();
//Change normal policy Class.Policy.Default = Class.Policy.Public; Property = Class.Property; //Define a Namespace ABC, and define two Class by normal way var ABC={ Class2:function(parameter){ this.testClass2=function(){ console.log("class2"); } }, Class3:function(parameter){ this.testClass3=function(){ console.log("class3"); } } }; Class({ Namespace:ABC, Name:"ClassTop", /* Base define, You should using one of them or none. default policy is public, inherit all methods & property except private members*/ Bases:[ABC.Class2,ABC.Class3,Class.CSingleton],//no parameter,default policy, inherit all methods& property. // Bases:[ [ABC.Class2,[],Class.Policy.Private,true], [ABC.Class3,[],Class.Policy.Public]], // Bases:{"Class2":{Namespace:ABC,Parameter:null,Policy:Class.Policy.Private,Hidden:false },"Class3":{Namespace:ABC,Parameter:[1],Policy:Class.Policy.Public} }, Private:{ m_var:1, }, Protected:{ constructor:function(v){ this.m_var=v; } }, Public:{ Test:function(){ this.m_var++; //this.Class2.testClass2(); this.AS(ABC.Class2).testClass2(); this.testClass2(); return this.m_var; } } } ); Class({ Namespace:ABC, Name:"ClassL2", Bases:[ABC.ClassTop], Private:{ m_var:2 }, Protected:{ proval:2, fight:Property(function(){ this.m_var--; console.log("ClassL2::fight (m_var)" +this.m_var); },[Property.Type.Virtual]) }, Public:{ Fight:function(){ console.log("ClassL2::Fight (m_var)"+this.m_var); this.fight(); } } }); Class({ Namespace:ABC, Name:"ClassL3", Bases:{"ClassL2":{Namespace:ABC,Policy:Class.Policy.Public}}, Private:{ Leg:2 }, Protected:{ TestProtected:0, fight:function(){ console.log("ClassL3::fight "+this.constructor["."].Name); this.Leg--; } } }); Class({ Namespace:ABC, Name:"ClassL4", Bases:[ABC.ClassL3], Private:{ fight:function(){ console.log("ClassL4::fight " +this.constructor["."].Name); } }, Public:{ GetTestProtected:function(){ return this.TestProtected; } } } ); Class({ Namespace:ABC, Name:"ClassL5", Bases:[ABC.ClassL4], Private:{ m_var:1, constructor:function(v){ this.m_var=v; } }, Public:{ GetTestProtected:function(){ this.m_var++; return this.TestProtected; }, Create:Property(function(v){ return new ABC.ClassL5(5); },[Property.Type.Static.Function]) } } ); function Test(){ var oldconsole = console; console={}; console.log=function(msg){ document.all["output"].innerHTML+=msg+"<br>"; } ABC.ClassTop.Instance.Test(); ABC.ClassTop.Instance.testClass3(); ABC.ClassTop.Instance.AS(ABC.Class2).testClass2(); ABC.ClassL2.Instance.Fight(); ABC.ClassL3.Instance.Fight(); ABC.ClassL4.Instance.Fight(); ABC.ClassL5.Instance.GetTestProtected(); ABC.ClassL5.Create(5); //var a = new ABC.ClassL5(5); //constructor is private. var p = new ABC.ClassL4(); p = ABC.ClassL5.Instance; p.GetTestProtected(); //p.TestProtected=0; //can't visit protected member. console = oldconsole; }
相关文章推荐
- 原生javascript实现分享到朋友圈功能 支持ios和android
- IE8等不支持placeholder,通过javascript实现此功能,能够兼容多种浏览器
- 原生javascript实现分享到朋友圈功能 支持ios和android
- SpiderMonkey-让你的C++程序支持JavaScript脚本
- SpiderMonkey-让你的C++程序支持JavaScript脚本
- (转)SpiderMonkey-让你的C++程序支持JavaScript脚本
- C++实现矩阵类,实现了大部分矩阵运算功能,大家可以类比matlab
- JavaScript实现复制功能各浏览器支持情况实测
- 转:让vim支持c++代码自动补全功能
- 跨平台C++ 功能全面的Socket类库,支持TCP,UDP,限速等等_陈华_新浪博客
- 跨平台C++ 功能全面的Socket类库,支持TCP,UDP,限速等等
- SpiderMonkey-让你的C++程序支持JavaScript脚本
- 原生javascript实现分享到朋友圈功能 支持ios和android
- 使用 SpiderMonkey 使 C++应用支持 JavaScript 脚本引擎
- 配置VS2005下boost C++正则表达式功能支持
- Ajax - JavaScript之实现私有属性、像C++和Java一样支持基于类的继承方法之例子
- JavaScript 实现命名空间(namespace)的最佳方案——兼容主流的定义类(class)的方法,兼容所有浏览器,支持用JSDuck生成文档
- [置顶] Mysql DBMigrate Class -- 增加外键支持功能
- javascript实现简单的弹出层以及拖拽功能(支持firefox、IE7.0以上、oprea、chrom)
- 【javascript】复制到剪贴板功能(支持目前各种浏览器)