java语言

从零码起调用javascript

时间:2024-10-23 07:44:12 java语言 我要投稿
  • 相关推荐

从零码起调用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