gpt4 book ai didi

javascript - "[native code] "是什么意思?

转载 作者:行者123 更新时间:2023-11-28 03:41:25 26 4
gpt4 key购买 nike

我尝试研究 jQuery 代码,所以我使用了这个:

document.write($.constructor);

jsfiddle

我得到了这个结果:

function Function() { [native code] }

[ native 代码]是什么意思?为什么我看不到真正的代码?

使用 Google-Chrome 进行测试

最佳答案

当您使用解释语言(而不是编译语言)定义函数时。您可以访问定义该函数的文件/字符串/文本。

例如,在 JavaScript 中,您可以读取已定义函数的定义正文文本:

function custom( param ){
console.log( param );
}

console.log( custom.toString() ); // <- Will display the full code (in text) of the function.

如果您尝试对 JavaScript 中通过构造*包含的函数执行相同的操作,它不会实现为文本,而是实现为二进制。

console.log( setInterval.toString() );

// Will display: function setInterval() { [native code] }

没有理由显示实现该函数的二进制代码,因为它不可读,甚至可能不可用。

jQuery 扩展了默认的 JavaScript 行为。这是它相对于 Prototype.js 如此受到高度赞赏和赞扬的原因之一。 Prototype 正在改变 JavaScript 的自然行为,在将 Prototype 与依赖正常功能的其他代码片段一起使用时,可能会造成不一致。

tl;博士:

jQuery 扩展了 JavaScript,有使用 native 代码实现的功能(这在性能方面是一件好事)。

<小时/>

*包含在构造中:对这部分进行一些详细说明。 JavaScript 本身可以用任何语言(C++、Java 等)编写/实现。在 Chrome 中,JavaScript 引擎 (V8) 是用 C++ 编写的。 Firefox 的 JavaScript 引擎 (SpiderMonkey) 也是用 C++ 编写的。

由语言规范 (ECMAScript) 定义并应包含在实际实现中的函数是用另一种语言编写的(例如这两种情况下的 C++),并可在 JavaScript 中作为内置/ native 函数。

这些函数实际上是编译的(二进制)C++ 代码,因此无法在 JavaScript 本身中显示,例如使用 [].map.toString() 语法。

关于javascript - "[native code] "是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57277687/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com