【问题标题】:What is JSON.parse written in / Is it open source?JSON.parse 是用什么写的/它是开源的吗?
【发布时间】:2012-02-09 06:51:27
【问题描述】:

PHP 函数是用 C 语言编写的,如果您愿意,可以查看源代码。例如这里 - session_start source

Javascript 怎么样? JSON.parse 之类的函数是如何实现的?在哪里可以查看源代码?

谢谢!

【问题讨论】:

  • 你可能会在这里找到它:hg.mozilla.org
  • 只有我,还是该用户名只是乞求投反对票? ;-)

标签: php javascript json


【解决方案1】:

JSON.parse 是原生的。这意味着它是在浏览器中定义的,方法的实现是特定于浏览器实现的。

v8 (Chrome) 有 JsonParser::ParseJson 的 C++ 方法

spidermonkey (Firefox) 有一个用于js_json_parse 的 C++ 函数

JavaScriptCore (Webkit / Safari) 有一个用于JSONProtoFuncParse 的 C++ 函数

Rhino (Mozilla) 有一个用于parseValue 的 Java 方法

Opera 和 IE 实现是闭源的。我也认为 Nitro 的实现也是闭源的。

请注意,还有许多其他 JavaScript 引擎。

【讨论】:

  • @gsnedders 我认为 nitro 是苹果维护的 JavaScriptCore 的封闭源代码分支?
  • 没有。它是开源的,并在 WebKit 存储库中标记。
【解决方案2】:

每个支持它的 JavaScript 引擎都有自己的 JSON.parse 实现。您可以在各自的存储库中查看各种开源引擎(V8SpiderMonkey)的代码。您还可以在 Crockford's github page 上查看 JavaScript 实现(Crockford 是提出 JSON 的人)——实际上,不止一个;有一个版本是状态机,另一个是递归下降解析器,另一个依赖于eval(有点作弊)。从JSON home page 链接到的还有各种语言的各种实现。

【讨论】:

    【解决方案3】:

    取决于浏览器。

    例如:Chrome 使用的是 V8 javascript 引擎。 http://code.google.com/p/v8/ 可能包含在其内部,或者可能是 Chromium 项目 http://www.chromium.org/Home 的一部分。

    【讨论】:

      【解决方案4】:

      这取决于浏览器。您查看您最喜欢的来源,看看是否可以在那里找到它。

      【讨论】:

        猜你喜欢
        • 2012-06-28
        • 2016-04-24
        • 2011-06-16
        • 1970-01-01
        • 2011-02-14
        • 2010-09-27
        • 2011-12-17
        • 2010-11-21
        相关资源
        最近更新 更多