- 相关推荐
从零码起调用javascript
Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。以下是小编为大家搜索整理的从零码起调用javascript,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!
package co.test;
import java.io.FileReader;
import java.io.LineNumberReader;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Function;
import org.mozilla.javascript.Scriptable;
public class JSExploration
{
private Context cx;
private Scriptable scope;
public JSExploration()
{
this.cx = Context.enter();
this.scope = cx.initStandardObjects();
}
public Object runJavaScript(String filename)
{
String jsContent = this.getJsContent(filename);
Object result = cx.evaluateString(scope, jsContent, filename, 1, null);
return result;
}
private String getJsContent(String filename)
{
LineNumberReader reader;
try
{
reader = new LineNumberReader(new FileReader(filename));
String s = null;
StringBuffer sb = new StringBuffer();
while ((s = reader.readLine()) != null)
{
sb.append(s).append("\n");
}
return sb.toString();
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
public Scriptable getScope()
{
return scope;
}
public static void main(String[] args)
{
String filename = System.getProperty("user.dir") + "/jsmap.js";
JSExploration jsExploration = new JSExploration();
Object result = jsExploration.runJavaScript(filename);
Scriptable scope = jsExploration.getScope();
Function sum = (Function) scope.get("sum", scope);
Function isPrime = (Function)sum.call(Context.getCurrentContext(), scope, sum, new Object[] {2,8});
Object ss = isPrime.call(Context.getCurrentContext(), sum, isPrime, new Object[] {2,8});
System.out.println(Context.toString(ss));
}
}
试验了一个java 调用 javascript 的例子,如果把jsmap.js中的与this 有关的代码注销的话程序就可以正常运行。不住销掉的话就会报个运行时错误。。。
js 代码如下(有关this 的代码已注销):
function sum(x, y) {
// this.formulaeObject = null;
// this.formulaeObject["vager"] = function (c, d) {
// return (c + d)/2;
// };
var vager = 1000;
return function (x,y){return x + y + vager;} ;
}
【从零码起调用javascript】相关文章:
JavaScript的应用10-19
系统调用的概念简介07-06
java远程方法调用技巧09-21
C语言函数的递归调用08-26
Java远程方法调用RMI08-24
c语言调用系统命令06-13
java构造函数调用技巧10-26
java调用c函数的实例09-16
JavaScript与Java的区别08-22
C++如何调用matlab函数06-29