请问javascript是用什么语言写的?

小朋友有很多问号
  • 768

忽然想到这个问题,通常我们用的python是用C写的,有一些底层需要理解可以查看源码.javascript也已经封装好了很多东西,比如 onmouseover事件,如果我想看他的源码实现,应该从哪入手?

回复
阅读 35.1k
8 个回答

JavaScript是浏览器上的ECMAScript的实现,具体的实现手法一般都通过JS引擎去解析的。不同的浏览器有这不同的引擎实现,所以造就了不同浏览器上的JS代码的细微差异,关于JS引擎可以参见:http://zh.wikipedia.org/wiki/JavaScript%E5%BC%95%E6%93%8E

想要查看JavaScript的源码就直接去看引擎的源码就好了,这里给出Googl和Firefox引擎源码的获取方法吧:

我想说的是,onmouseover这个是DOM的范畴,在JS引擎内可找不到任何关于DOM的实现。
DOM树的解析、构造、布局是浏览器内核(渲染引擎)的重要功能,常见的开源的有webkit(Safari/chrome旧版/android旧版)、gecko(火狐)和blink(chrome/android/新opera)等

javascript本身几乎没有“封装”或“实现”什么东西,全部内置对象甚至可以很容易地列出来

  • Object
  • Function
  • Array
  • String
  • Number
  • Boolean
  • Date
  • Regex
  • Math
  • JSON
  • Error和若干细分的Error

以上几个对象和parseInt/Float eval isNaN encodeURIComponent等少数几个函数合起来就是所有JS原生的能力了

题叶
  • 17.3k

标题和内容问题不一致...

JS 是语言, 鼠标事件触发是 DOM 的处理, 不同浏览器不一样:

Chrome 的 JS 引擎是 V8, 处理 DOM 的引擎是 Blink(Webkit),
要看代码去看 Chromum 的仓库:
https://code.google.com/p/chromium/

Firefox 引擎..每次名字不一样, IonMonkey 什么 **Monkey 的.. 排版引擎是 Gecko,
到仓库去找找吧, 不大清楚在哪:
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Source_Code/Downloading_Source_Archives

IE.. 估计看不了源码

不会 C++ 的顺便问下楼主 C++ 水平如何...

javascript 是一门很单纯的语言,只是浏览器为了让javascript可以操作自己在window对象上线实现了一堆接口

Allan91
  • 2.2k

对着问题回答两个问题:

问题一:请问javascript是用什么语言写的?

什么是解释型语言?

JS、Python都是解释型语言。这类语言的源码不能直接去运行,需要依赖一定的宿主环境,比如浏览器(一般由c++写的),Node.js(同样C++)等,让他们去转换为编译型语言(C++、Java等)才能进一步去转为机器码(二进制)。

什么是编译型语言?

C++、Java等都是编译型语言。编译型语言首先将源代码编译生成机器语言,再由机器运行机器码,也就是二进制。

所以,这个问题本身是伪命题。

问题二:如果我想看他的源码实现,应该从哪入手?

想要了解解释型语言的实现,那就得去看能将它编译的“引擎”,比如现在比较流行的 V8 引擎!当然能“解释”JS语言的的还有:

  • D:DMDScript
  • Java:Rhino、Nashorn、DynJS、Truffle/JS 等
  • C#:Managed JScript、SPUR 等等

所以,这个问题,应该从JS引擎入手。

yhnujm
  • 383

google chrome的js引擎是v8,nodejs用的也是这个,据说是目前速度最快的,用c++写的,代码在此http://code.google.com/p/v8/

多研究一下js的运行机制,比如看看JavaScript设计模式之类的书,应该会对浏览器中js是如何工作的会比较清楚些。至于研究内核代码,我想暂时应该还没到那个地步。

宣传栏