这次真的把java的语法写成javascript了,看起来太熟悉了。
先给个例子:
j('package j.unit', function() {
/**
* @class j.unit.Observable
*/
j('class Observable', function(jsuper) {
return {
constructor:function() {
jsuper.constructor.call(this);
}
}
});
});
j('package jui', function() {
j('import j.unit.Observable;');
j('import j.unit.*;');
j('class Component', {
constructor:function() {
},
show:function() {
console.log("good");
}
});
j('class Container extends Component implements Observable', function(jsuper, ob) {
return {
constructor:function() {
jsuper.constructor.call(this);
ob.constructor.call(this);
}
}
});
});
附上实现代码:
function j() {
var def, code;
def = arguments[0];
if (arguments.length == 2) {
code = arguments[1];
}
if (J.isArray(def)) {
def = def.join(' ');
}
var defs = def.replace(/\s{1,}/g, ' ').split(/\s/);
var l = defs.length;
if (l % 2 != 0) {
throw new Error("[jjava] def error");
}
var args = [];
for (var i = 0; i < l; i += 2) {
switch (defs[i]) {
case "package":
return jpackage.call(this, defs[i + 1], code);
case "import":
return jimport.call(this, defs[i + 1]);
case "class":
args[0] = defs[i + 1];
break;
case "extends":
args[1] = defs[i + 1];
break;
case "implements":
args = args.concat(defs[i + 1].replace(/\s/).split(","));
break;
}
}
args.push(code);
return jclass.apply(this, args);
} 其中的 jpackage,jimport,jclass 请看
http://openxtiger.iteye.com/blog/1708715
本文介绍了一种使用JavaScript模拟Java编程风格的方法。通过自定义函数j()实现了包管理、类定义等功能,使得JavaScript代码看起来更接近Java。
904

被折叠的 条评论
为什么被折叠?



