在使用 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++ 绑定程序。
-- -------------------- ---- ------- -- -------- -------- -------- --------- ---- - ----- ------------------------- ----- ------------ ----- ---------- ----- ----------- ----- ----------- ----- ---------- ---- ------------ ---------------------------- ----- - -------- ------- - ------------------ ------------- ------- - ---------------------------- ------ --------- ----------------------------------- - ---- ------------------------ -------- - ------------------------ -------- -------- - --------------------------------- ----------- -
// addon.js const addon = require('./build/Release/addon'); console.log(addon.hello()); // 'Hello World!'
在此示例中,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