[英]What does " [native code] " mean?
我试图调查 jQuery 代码,所以我使用了这个:
document.write($.constructor);
我得到了这个结果:
function Function() { [native code] }
[native code]
是什么意思? 为什么我看不到真正的代码?
用Google-Chrome
测试
当您用解释语言(而不是编译语言)定义函数时。 您可以访问定义函数的文件/字符串/文本。
例如,在 JavaScript 中,您可以读取已定义函数的定义正文文本。
如果您尝试对 JavaScript 中通过构造包含的函数执行相同操作,则它不会以文本形式实现,而是以二进制形式实现。 没有理由显示实现该功能的二进制代码,因为它不可读,甚至可能不可用。
jQuery 扩展了默认的 JavaScript 行为。 例如,这就是它与 Prototype.js 相比受到高度赞赏和赞扬的原因之一。 Prototype 正在改变JavaScript 的自然行为,当将 Prototype 与其他一些依赖于正常功能的代码一起使用时,可能会产生不一致的情况。
jQuery 扩展了 JavaScript,使用本机代码实现了一些功能(这在性能方面是一件好事)。
$
, jQuery
只是一个函数。 不调用它,它只是一个普通的函数。 函数的构造函数是Function
,因此$.constructor
显示[native code]
。
bind 对函数执行此操作:
var f = function() { /* source code */ }; console.log(f.toString());
function () { /* source code */ }
var a = {}; f = f.bind(a); console.log(f.toString());
function () { [native code] }
f = new Function('/* source code */'); console.log(f.toString());
function anonymous() { /* source code */ }
f = f.bind(a); console.log(f.toString());
function () { [native code] }
bind 返回对某种包装器代码的引用,或者 toString 认为绑定副本是本机的,因为它不是由用户直接创建的
但是,直接记录函数,不使用 toString(),打印(在 Chrome 中)原始未绑定函数的源代码:
f = f.bind(a); console.log(f)
ƒ () { /* source code */ }
在 FF 中,这不起作用 - FF 打印函数对象,没有源代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.