深入理解 JavaScript 之基础

以前总觉得javascript仅仅是一个浏览器端的脚本语言,完成操作DHTML和css。给网页一些动态性。对于Jquery、Dojo、 MooTool等也听说很久了,但是没有深入的了解。最近看Jquery的代码,发现javascript原来可以写的如此优雅和简介。再假设该最近 Node.js等服务器端javascript的发展,感觉自己对javascript的认识有很大的误区和局限,于是想仔细看看javascript的 前世今生。然后在把webkit的源代码品读一番,作为自己原来小觑javascript的补偿。

一:javascript的出生

计算机领域很多伟大的、庞大的技术,都有一个伟大的人物,现在在国内几乎没有那个公司可以独立的开发出浏览器。在很久之前有个人自己发明了 javascript。1994年的时候网景公司(NetScape)发布了世界上第一个比较出名的浏览器Navigator,这个浏览器仅仅可以浏览网 页,没有任何交互交互效果。当然那时候肯定更没有flash和Sliverlight技术。此时的浏览器估计就是一个有排版功能的记事本的样子。用户在表 单里面填写的任何信息,必须提交到服务器上面,有服务器进行校验然后在把结果返回给客户端,再由客户端提示给用户。这浪费了很大的时间和资源。于是函数式 编程的爱好者 布兰登·艾克Brendan Eich) 登场了,他负责开发一门新语言,能够嵌入到浏览器里面执行,完成表单校验、html、css操作等功能。他仅用10天时间就完成了javascript的初版。他当时的设计思路大概是:

以下引用自阮一峰的blog

1:借鉴C语言的基本语法

2:借鉴Java的数据类型和内存管理。

3:借鉴Scheme语言,将函数式编程升级为一等公民

4:借鉴Self语言,使用原型(prototype)继承机制

最初叫LiveScript,在跟sun合作之后才改名为javascript。

二:Javascript引擎 javascript的设计之初,主要是嵌入在浏览器里面执行。浏览器主要有二部分构成,主要包括排版引擎和javascript引擎。主要出名的javascript引擎包括:

firefox浏览器

(1)SpiderMonkey

这算是第一款javascript引擎,由javascript的发明人布兰登.艾克在网景公司时用C语言写成。

(2)Rhino

由网景公司的Norris Boyd开发,用java语言实现。

微软IE

Chakra (JScript引擎),中文译名为查克拉,用于Internet Explorer 9的32位版本[1]及Internet Explorer 10。

Opera浏览器

Carakan,由Opera软件公司编写,自Opera10.50版本开始使用。

webkit的 JavaScriptCore

Webkit是一个开源的浏览器引擎,许多浏览器都用Webkit作为引擎,比如苹果的Safari,google的Chrome浏览器,android上的浏览器核心也是Webkit。Webkit包括WebCore的排版引擎和JsCore引擎。

webkit_overview

(5)V8

是google的开源项目,是用于Google Chrome的js引擎

为了缩短由垃圾收集造成的停顿,V8 使用stop-the-world, generational, accurate 的垃圾收集器。[5]在执行回收之时会暂时中断程序的执行,而且只处理对象堆栈。还会收集內存内所有对象的指针,可以避免内存溢出的情况。V8汇编器是基于Strongtalk汇编器。

各个浏览器的内核了解,现在主流的的浏览器包括:IE、Firefox、Chrome、Opera、Safari。国产的浏览器主要有360、搜狗、QQ、UCWeb等浏览器、世界之窗等

先总结一下各大浏览器:

Firefox:和网景公司的NetScape有着天生的联系,初期的版本就是采用网景开放的源代码。布局引擎是

再总结一下国产的浏览器:

360浏览器:360安全浏览器是采用IE内核,是有世界之窗和360合作的东东。360极速浏览器是基于Chromium开源项目,同时又集成了IE内核。需要切换引擎。

搜狗浏览器:采用Ie内核和WebKit内核。

QQ浏览器5:采用Webkit的布局引擎和JavaScriptV8引擎,向Chrome靠拢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值