为什么Javascript内置方法/函数是用C / C ++而不是JS语法编写的

时间:2016-10-09 14:54:04

标签: javascript v8

这个问题是参考这个老问题Where-can-i-find-javascript-native-functions-source-code

该页面上的答案说,源代码位于cc++,但我很好奇为什么源(定义)在这些语言中?我的意思是它们是例如toString()方法的JS函数定义。它是一个JavaScript函数,因此它的定义必须使用Javascript语法编写。

Chrome控制台输出toString;中的

function toString() { [native code] }

如果它是用户定义的函数,那么你可以看到定义而不是toString()或其他内置函数 毕竟它们只是必须在JavaScript语法中定义的函数/方法,以便引擎正确解释它们。

我希望你能理解我想要做的是什么。

1 个答案:

答案 0 :(得分:5)

正如评论中指出的那样,您对JavaScript的工作方式存在根本性的误解。

JavaScript是一种脚本语言,在该术语的最纯粹意义上,即它用于编写主机环境的脚本。它意味着嵌入在一个更大的系统中(在这种情况下,用C / C ++编写的Web浏览器)以有限的方式操作该系统。

其他一些例子是bash作为unix的脚本语言,python作为sublime文本编辑器的脚本语言,elisp作为emacs的脚本语言,lua作为魔兽世界的脚本语言等。

当我们说某个功能是“内置”时,我们的意思是它实际上是托管环境(例如网络浏览器)的功能,而不是脚本语言(JavaScript)的功能。

虽然JavaScript标准要求某些内置函数,但这意味着符合标准的主机环境需要公开该功能,而不管底层实现的语言是什么。