以前总觉得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引擎。
(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靠拢。
相关推荐
深入理解这一主题,对于任何JavaScript开发者来说都是至关重要的。在这个教程中,我们将探索JavaScript异步处理的各个方面,包括事件循环、回调函数、Promise、Async/Await以及generator等。 首先,我们来了解异步...
《深入理解JavaScript系列》是汤姆大叔精心编写的关于JavaScript编程的一套教程,旨在帮助开发者深化对这门语言的理解,提升编程技能。本系列涵盖了JavaScript的核心概念、面向对象编程、DOM操作以及设计模式等多个...
总的来说,深入理解原型和闭包对于掌握JavaScript至关重要,因为它们不仅体现了JavaScript独特的设计思想,还是区别于其他主流编程语言的关键特性。无论是原型链和作用域链的理解,还是函数作为一等对象的灵活使用,...
《深入理解JavaScript》一书由美国作者罗彻麦尔撰写,是JavaScript编程领域的经典之作。本书旨在帮助读者全面、深入地掌握JavaScript这门强大的脚本语言,从而在Web开发领域中发挥出更大的潜力。 JavaScript,通常...
本书旨在通过浅显易懂的语言,帮助读者深入理解JavaScript语言的核心概念与技术细节,并结合实际开发场景进行讲解,让读者不仅知其然,还能知其所以然。 #### 二、书籍内容亮点 - **基础知识**:包括变量、数据类型...
深入理解JavaScript的源代码对于任何想要成为优秀前端开发者或者全栈工程师的人来说至关重要。 首先,我们要明白JavaScript的基础,包括变量、数据类型(如字符串、数字、布尔值、null、undefined、对象和数组)、...
"深入理解JavaScript"这一主题涵盖了许多重要的概念和技术,包括基础语法、变量、数据类型、控制结构、函数、对象、原型链、闭包、异步编程、模块化和ES6+的新特性等。 首先,我们从基础开始。JavaScript的基本语法...
深入理解这些概念,可以帮助开发者编写更高效、更易于维护的代码。例如,闭包是JavaScript中的一个高级特性,它允许函数访问并操作其外部作用域的变量,常用于实现模块化和数据封装。 "JavaScript专题系列"则可能...
《深入浅出JavaScript源代码》是一本旨在帮助开发者深入理解JavaScript核心机制的书籍,通过源代码分析来提升对语言本质的理解。这个压缩包包含了这本书籍中的源代码示例,为学习者提供了实际操作和研究的素材。 在...
阅读《深入理解JavaScript系列》可以帮你扎实基础,理解JavaScript的核心机制;《超实用的jQuery代码段》将展示jQuery在实际开发中的应用技巧;而《jQuery源码分析系列》则可以帮助你深入理解jQuery的工作原理,提升...
在“HTML5+JavaScript动画基础”这个主题中,我们深入探讨如何利用这两者构建引人入胜的动画效果。 首先,HTML5新增了许多元素和API,如canvas标签,它提供了一个画布,允许开发者通过JavaScript绘制图形并实现动态...
总而言之,《深入浅出JAVASCRIPT 中文版》这本书将引导读者全面了解JavaScript,从基础语法到高级特性,再到实际应用,帮助读者成为一名熟练的JavaScript开发者。通过阅读这本书,你可以深入理解这门语言,从而更好...
本教程旨在为初学者提供一个全面的JavaScript基础知识学习平台,帮助理解并掌握这种强大的脚本语言。 《JavaScript基础教程》首先会介绍JavaScript的历史背景和基本语法,包括变量、数据类型、操作符、流程控制...
因此,深入理解JavaScript的基础语法和高级特性,对于任何Web开发者来说都是至关重要的。 首先,基础入门阶段会涵盖JavaScript的基本语法,包括变量、数据类型(如基本类型和引用类型)、操作符、控制流程(如条件...
总的来说,这个压缩包提供了一个全面的JavaScript基础知识教程,涵盖了数据类型、Object、内置对象和变量等核心概念,对于初学者或者需要巩固基础的开发者来说,是一份非常有价值的参考资料。通过学习这些内容,可以...
《JavaScript深入浅出》是一本致力于帮助读者深入了解JavaScript编程语言的书籍。JavaScript作为现代Web开发不可或缺的一部分,其重要性不言而喻。本书通过深入浅出的方式讲解了JavaScript的基础概念、核心特性以及...
随着对 JavaScript 的深入理解,你可以逐步掌握更高级的概念,如函数、对象、数组、事件处理程序等,从而实现更复杂的网页功能。 总之,JavaScript 是网页开发不可或缺的一部分,它使得静态的 HTML 页面变得生动...
《深入浅出JavaScript》这样的书籍提供了深入学习的途径。实践是检验理论的最好方式,因此,动手编写JavaScript代码,参与在线编程挑战,能有效提升编程技能。 在HTML文档中插入JavaScript有两种主要方式:直接在...
适合人群:具备一定JavaScript基础,希望深入了解JavaScript底层机制的开发者,尤其是前端开发工程师。 使用场景及目标:①理解JavaScript的新特性和最佳实践;②解决复杂的异步编程问题;③优化性能,提升代码质量...