忽然想到这个问题,通常我们用的python是用C写的,有一些底层需要理解可以查看源码.javascript也已经封装好了很多东西,比如 onmouseover
事件,如果我想看他的源码实现,应该从哪入手?
忽然想到这个问题,通常我们用的python是用C写的,有一些底层需要理解可以查看源码.javascript也已经封装好了很多东西,比如 onmouseover
事件,如果我想看他的源码实现,应该从哪入手?
我想说的是,onmouseover这个是DOM的范畴,在JS引擎内可找不到任何关于DOM的实现。
DOM树的解析、构造、布局是浏览器内核(渲染引擎)的重要功能,常见的开源的有webkit(Safari/chrome旧版/android旧版)、gecko(火狐)和blink(chrome/android/新opera)等
javascript本身几乎没有“封装”或“实现”什么东西,全部内置对象甚至可以很容易地列出来
以上几个对象和parseInt/Float eval isNaN encodeURIComponent等少数几个函数合起来就是所有JS原生的能力了
标题和内容问题不一致...
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++ 水平如何...
对着问题回答两个问题:
JS、Python都是解释型语言。这类语言的源码不能直接去运行,需要依赖一定的宿主环境,比如浏览器(一般由c++写的),Node.js(同样C++)等,让他们去转换为编译型语言(C++、Java等)才能进一步去转为机器码(二进制)。
C++、Java等都是编译型语言。编译型语言首先将源代码编译生成机器语言,再由机器运行机器码,也就是二进制。
所以,这个问题本身是伪命题。
想要了解解释型语言的实现,那就得去看能将它编译的“引擎”,比如现在比较流行的 V8 引擎!当然能“解释”JS语言的的还有:
所以,这个问题,应该从JS引擎入手。
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
JavaScript是浏览器上的ECMAScript的实现,具体的实现手法一般都通过JS引擎去解析的。不同的浏览器有这不同的引擎实现,所以造就了不同浏览器上的JS代码的细微差异,关于JS引擎可以参见:http://zh.wikipedia.org/wiki/JavaScript%E5%BC%95%E6%93%8E
想要查看JavaScript的源码就直接去看引擎的源码就好了,这里给出Googl和Firefox引擎源码的获取方法吧: