【问题标题】:Where is low level code of Javascript standard built-in objects?Javascript 标准内置对象的低级代码在哪里?
【发布时间】:2022-01-09 11:34:34
【问题描述】:


我正在寻找获取 javascript 内置函数的低级代码的方法。
例如,在 'Array.prototype.indexOf()' 的 mdn 站点中有一个 polyfill(我想要这个表单,我以我的方式调用这个低级代码)
(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)

我明白这是内置方法的低级代码。
这是我的问题,在哪里可以看到“String.prototype.toLowerCase()”方法内部的代码?

【问题讨论】:

标签: javascript built-in polyfills


【解决方案1】:

这将取决于您的 javascript 实现。

对于 V8,here 是 toLowerCase(和 toUpperCase)的核心

低级函数(例如这些)通常用 javascript 引擎编写的任何语言编写 - 这就是它们如此快速的原因。所以不要期待普通的纯 JavaScript 开发人员容易阅读的东西:)

【讨论】:

    【解决方案2】:

    JavaScript 由一个标准定义,有许多主要的实现。

    该方法和其他方法的定义可以在TC39 website 中找到。它只是在算法上定义的,而不是在实际代码中。

    话虽如此,对于开源实现,您实际上可以查看这些实现的源代码,尽管它们可能使用其他一些语言,例如 C++。

    当前主要的 JavaScript 开源实现是 Google's V8Apple's WebKitMozilla's SpiderMonkey

    【讨论】:

    • 同时添加 JavaScriptCore,它是 Webkit 的一部分。虽然不如 V8 流行,但它被广泛使用,因为它是唯一批准用于 iOS 的 JavaScript 引擎,因此它被用于 iOS 的 Google Chrome、用于 iOS 的 Brave、许多混合移动应用程序(如银行应用程序等)使用:github.com/WebKit/webkit/tree/main/Source/JavaScriptCore。它肯定比 SpiderMonkey 使用更广泛
    • 谢谢,我不知道它是开源的,我以为 JSC 是专门的 iOS 专有东西。
    【解决方案3】:

    您正在寻找的答案可能不存在,但我会尽力帮助您。

    低级功能取决于您使用的引擎。 举几个例子:

    • V8 — 开源,由 Google 开发,用 C++ 编写
    • Rhino — 由 Mozilla 基金会管理,开源,完全使用 Java 开发
    • SpiderMonkey — 第一个 JavaScript 引擎,在过去支持 Netscape Navigator,现在支持 Firefox
    • JavaScriptCore — 开源,以 Nitro 名义销售,由 Apple 为 Safari 开发

    我假设您正在寻找了解他们在做什么的功能。如果是这种情况并且您不了解编写引擎的语言,那么查看这些功能的polyfill 实现可能是一个想法。这些用 javascript 编写的,如果您正在寻找它们,可能会帮助您理解它们。

    祝你好运! :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 2012-07-08
      • 2020-10-09
      相关资源
      最近更新 更多