什么是 "[native code]"?——JavaScript中的原生代码

在使用 JavaScript 进行开发时,你可能会经常看到一些函数或方法的源代码输出以 [native code] 结尾。那么这个术语究竟是什么意思呢?本文将深入探讨 [native code] 的含义,并为读者提供有关如何编写原生 JavaScript 代码的指导。

什么是 “[native code]”?

在 JavaScript 中,一个函数可以用两种方式定义:一种是使用 JavaScript 代码直接定义,另一种则是通过绑定到 JavaScript 引擎的底层 C 或 C++ 代码实现的。如果函数是由底层代码实现的,那么在调试器中查看其源代码时,就会显示 [native code]

底层代码通常是由浏览器厂商编写的,因此具有高度优化的性能和功能。例如,Array.prototype.push()Array.prototype.pop() 等方法就是由底层代码实现的。而在 JavaScript 引擎中运行的其他代码,则是由 JavaScript 解释器解释执行。

值得注意的是,对于底层代码实现的函数,虽然无法查看其源代码,但它们仍然遵循了相同的规则和语法,即可通过 JavaScript 代码进行调用和使用。

如何编写原生 JavaScript 代码

除了使用 JavaScript 代码直接定义函数外,还可以使用 C 或 C++ 编写底层代码,并将其绑定到 JavaScript 引擎中。这种编写原生 JavaScript 代码的方式被称为“绑定”。

Node.js 是一个流行的运行时环境,它允许 JavaScript 与本地代码交互,这也成为了学习如何编写原生 JavaScript 代码的一种途径。以下是一个简单的示例——一个通过 Node.js 运行的 JavaScript/ C++ 绑定程序。

-- --------
-------- --------

--------- ---- -

  ----- -------------------------
  ----- ------------
  ----- ----------
  ----- -----------
  ----- -----------
  ----- ----------

  ---- ------------ ---------------------------- ----- -
    -------- ------- - ------------------
    ------------- ------- - ---------------------------- ------ ---------
    -----------------------------------
  -

  ---- ------------------------ -------- -
    ------------------------ -------- --------
  -

  --------------------------------- -----------

-
-- --------
----- ----- - ---------------------------------

--------------------------- -- ------ -------

在此示例中,C++ 代码包含一个名称为 Method 的函数,该函数返回一个字符串“Hello World!”。此后,我们使用 Node.js 的 NODE_SET_METHOD() 函数将此函数绑定到 JavaScript 中,并将其导出为 hello 方法。最后,在 JavaScript 中运行 addon.hello() 就可以调用绑定的 C++ 方法并返回“Hello World!”字符串。

总结

在 JavaScript 中,[native code] 表示一个函数是通过底层 C 或 C++ 代码实现的。虽然无法查看其源代码,但我们仍然可以使用它们提供的高性能和功能。此外,如果想要编写原生 JavaScript 代码,可以使用 C 或 C++ 编写底层代码,并将其绑定到 JavaScript 引擎中。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/26327