原生js方法怎么实现的

JavaScript014

原生js方法怎么实现的,第1张

原生的JS函数或方法一般都是由运行环境提供,运行环境分多个。

1、浏览器,一般浏览器都是用系统API写的,对WINDOWS,UNIX/LINUX系统是,C语言编写,相应的js原生方法,用C语言实现;特例:MAC OS 与IOS由OBJECTIVE-C,SWIFT提供系统API,相应的js原生方法用OBJECTIVE-C或SWIFT实现。

2、adobe,C语言编写依赖操作系统API,js原生方法由C语言或OBJECTIVE-C,SWIFT现;看运行目标平台。

3、node.js,mongodb,C语言实现,js原生方法由C语言实现。

4、微软excel2010及以后版本,有可能C#或.net实现,具体不详,js原生方法由C#或.net实现。

js代码如下:

[javascript] view plain copy

function formula(var1,var2){

return var1+var2-factor

}

java代码如下:

[java] view plain copy

import java.io.FileNotFoundException

import java.io.FileReader

import java.util.Scanner

import javax.script.Bindings

import javax.script.Invocable

import javax.script.ScriptContext

import javax.script.ScriptEngine

import javax.script.ScriptEngineManager

import javax.script.ScriptException

public class AboutJavaScript {

public static void main(String[] args) throws Exception {

ScriptEngine engine=new ScriptEngineManager().getEngineByName("javascript")

Bindings bind = engine.createBindings()

bind.put("factor", 1)

engine.setBindings(bind, ScriptContext.ENGINE_SCOPE)

Scanner input=new Scanner(System.in)

while (input.hasNextInt()) {

int first= input.nextInt()

int sec=input.nextInt()

System.out.println("输入参数是:"+first+","+sec)

engine.eval(new FileReader("F:/model.js"))

if(engine instanceof Invocable){

Invocable in =(Invocable) engine

Double result=(Double) in.invokeFunction("formula", first,sec)

System.out.println("运行结果:"+result.intValue())

}

}

}

}