`
abruzzi
  • 浏览: 452785 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

JavaScript内核系列第0版整理稿下载

阅读更多

2010年的前半年,我在Javaeye上发表过一个系列文章《JavaScript内核》,虽然名字叫做内核,可能很多人认为陡具内核之名,而无内核之实,也可能另外一些朋友比较喜欢,曾多次问我索要完整版本,由于2010年个人原因,很难找出时间来做这件细致的工作,一直拖到了最近,才完成,望诸位见谅。


进入2011年之后,工作的任务告一段落之后,我得以有时间,有机会来为这个《JavaScript内核》系列做一个收尾工作。之前的计划是:在基础部分讲解完成之后,尽量找一些实例,特别是JavaScript在服务端的应用实例来做一些讨论,或者加入一定的脚本引擎工作机制等方面的讨论,现在不知道今年还有没有足够的时间和精力。原则上来说,如果时间精力不够,我则尽可能的不动笔,否则可能陷入以其昏昏,使人昭昭的尴尬境地。后半部分是否有能力来做暂不讨论,那我就先讲之前的版本整理出来,也有很多朋友向我索要过完整的电子版,不过当时陷于项目开发中,没有时间来做,但愿这个版本不算太晚。

 

文章后的附件即为第0版的整理稿,共有9章,也记录了一些像正式出版物那样的前言后记之类,不论怎么说,这也是心血之作,不想做的太过于随便,请自行斟酌。 

分享到:
评论
64 楼 sky54521 2011-01-28  
elfmtian 写道
谢谢谢 下载看看

不过我有点看不惯到处人人都说自己忙忙忙,没精力,有那么忙吗?天天忙的加班到晚上10点,人恐怕半个月也撑不下来吧。



我看有人每天加班到10点以后(最早10走),每天如此,加了半年
一点都不夸张
63 楼 elfmtian 2011-01-28  
谢谢谢 下载看看

不过我有点看不惯到处人人都说自己忙忙忙,没精力,有那么忙吗?天天忙的加班到晚上10点,人恐怕半个月也撑不下来吧。
62 楼 bugmenot 2011-01-27  
sky54521 写道
abruzzi 写道
sky54521 写道
楼主,我觉得你应该拿一种js的解析器/编译器/解释器来说明一下(就是把js语言文本的执行过程写一下,即:从js代码的解析过程到浏览器的展现过程)

如果楼主能把这整个过程写详细了,我想没人再感说你不配用“内核”这个名字的

期待楼主能帮我解惑


事实上,前9章是讨论JavaScript的基本概念以及两个编程范式(OO和FP)的,如果细心的话,应该可以看到,这九章都属于“基础知识”这个大的节点的叶子,本来此书的安排还有两个与“基础知识”平行的两个节点:“高级主题”和“实际应用”。
高级主题中本来是打算讨论一下spidermonkey的结构,但是还没有研究透;实际应用部分讨论JS在web中的应用,在服务器端的应用以及在应用程序中的应用。最初整理出来的只有基础知识部分(也就是已经发布到博客上的),以及实际应用部分的部分内容(没有发布),高级主题只有零星的研究(因为分析spidermonkey和v8的时候,发现自己在虚拟机上的水平不够,一直在学习,不敢贸然写),所以后边的两个部分质量不高,就不拿出来现眼了。



现在市面上就是缺这方面的书,如果楼主写出来的话,一时间也不会过时的,我相信肯定会有不少粉丝
其他废话我就不说了,
结论就是:楼主赶紧把书写完吧,更多人期待你没有写完的那部分 O(∩_∩)O哈哈~

这个话题最近在IE Blog、Channel 9上有不少好文章和录像,讲一个网页是如何通过浏览器的各部分合作才展现出来的。其中IE9的名为Chakra的新JS引擎也有深度介绍。光是翻译过来就能给国内的技术圈子带来新鲜资讯。

An Early Look At IE9 for Developers
The Architecture of Full Hardware Acceleration of All Web Page Content
Performance: Profiling how different web sites use browser subsystems
Performance: What Common Benchmarks Measure
Measuring Browser Performance with the Windows Performance Tools
The New JavaScript Engine in Internet Explorer 9
Enhanced Scripting in IE9: ECMAScript 5 Support and More
Chakra: Interoperability Means More Than Just Standards
ECMAScript 5 Part 1: Reusable Code
ECMAScript 5 Part 2: Array Extras
HTML5, Modernized: Fourth IE9 Platform Preview Available for Developers
HTML5, and Real World Site Performance: Seventh IE9 Platform Preview Available for Developers

PDC10 Day 2 Keynote
IE 9 Performance Pipeline Overview
Inside IE 9’s High Performance JavaScript Engine
Inside SPUR - A Trace-Based JIT Compiler for CIL

61 楼 sky54521 2011-01-27  
abruzzi 写道
sky54521 写道
abruzzi 写道
xzxw1115 写道
感谢楼主的分享奉献精神,看不惯没有实际行动而到处扣字眼的人,书名是人起的,作者喜欢叫什么就叫什么,顶楼主,分享万岁,期待你更多文章.


现在这个版本可能还当不起这个名称,但是我会努力让其当的起。孔子曰:“名不正则言不顺,言不顺则事不成”,可能有标题党的嫌疑,我也屡次说明,这个是第0版...的整理稿,但是貌似很多人不习惯也不喜欢看上下文,呵呵。



楼主,我觉得你应该拿一种js的解析器/编译器/解释器来说明一下(就是把js语言文本的执行过程写一下,即:从js代码的解析过程到浏览器的展现过程)

如果楼主能把这整个过程写详细了,我想没人再感说你不配用“内核”这个名字的

期待楼主能帮我解惑


事实上,前9章是讨论JavaScript的基本概念以及两个编程范式(OO和FP)的,如果细心的话,应该可以看到,这九章都属于“基础知识”这个大的节点的叶子,本来此书的安排还有两个与“基础知识”平行的两个节点:“高级主题”和“实际应用”。
高级主题中本来是打算讨论一下spidermonkey的结构,但是还没有研究透;实际应用部分讨论JS在web中的应用,在服务器端的应用以及在应用程序中的应用。最初整理出来的只有基础知识部分(也就是已经发布到博客上的),以及实际应用部分的部分内容(没有发布),高级主题只有零星的研究(因为分析spidermonkey和v8的时候,发现自己在虚拟机上的水平不够,一直在学习,不敢贸然写),所以后边的两个部分质量不高,就不拿出来现眼了。



现在市面上就是缺这方面的书,如果楼主写出来的话,一时间也不会过时的,我相信肯定会有不少粉丝
其他废话我就不说了,
结论就是:楼主赶紧把书写完吧,更多人期待你没有写完的那部分 O(∩_∩)O哈哈~
60 楼 abruzzi 2011-01-27  
sky54521 写道
如果楼主是想做学问的,不只是为了做教程打着出书的幌子,那请扪心自问,有没有真正深入的内核(如果js有内核这么一说的话,我不管到底说的是core还是kernal)

当然,看过楼主这教程的人的水平参吃不齐,有些人还没到这一步,看完肯定有较好的,也有失望的,希望楼主不只是为了哗众取宠

楼主自重啊楼主!!!


如果我的标题是《JavaScript内核第0版.上》,那有可能被人说成太监,则“虽人有百口,口有百舌,不能辩驳。”,哗众取宠,你见过通过这种方式来哗众取宠的吗?《JavaScript Core》V0虽然只是一部分,但是也是历时一年,查阅资料,编写示例写出来的。也不敢说如何辛苦,但是也耗费了大量的时间和精力来做,有完全免费的提供下载,就为了哗众取宠?这个代价未免太大。
59 楼 abruzzi 2011-01-27  
sky54521 写道
abruzzi 写道
xzxw1115 写道
感谢楼主的分享奉献精神,看不惯没有实际行动而到处扣字眼的人,书名是人起的,作者喜欢叫什么就叫什么,顶楼主,分享万岁,期待你更多文章.


现在这个版本可能还当不起这个名称,但是我会努力让其当的起。孔子曰:“名不正则言不顺,言不顺则事不成”,可能有标题党的嫌疑,我也屡次说明,这个是第0版...的整理稿,但是貌似很多人不习惯也不喜欢看上下文,呵呵。



楼主,我觉得你应该拿一种js的解析器/编译器/解释器来说明一下(就是把js语言文本的执行过程写一下,即:从js代码的解析过程到浏览器的展现过程)

如果楼主能把这整个过程写详细了,我想没人再感说你不配用“内核”这个名字的

期待楼主能帮我解惑


事实上,前9章是讨论JavaScript的基本概念以及两个编程范式(OO和FP)的,如果细心的话,应该可以看到,这九章都属于“基础知识”这个大的节点的叶子,本来此书的安排还有两个与“基础知识”平行的两个节点:“高级主题”和“实际应用”。
高级主题中本来是打算讨论一下spidermonkey的结构,但是还没有研究透;实际应用部分讨论JS在web中的应用,在服务器端的应用以及在应用程序中的应用。最初整理出来的只有基础知识部分(也就是已经发布到博客上的),以及实际应用部分的部分内容(没有发布),高级主题只有零星的研究(因为分析spidermonkey和v8的时候,发现自己在虚拟机上的水平不够,一直在学习,不敢贸然写),所以后边的两个部分质量不高,就不拿出来现眼了。
58 楼 sky54521 2011-01-27  
如果楼主是想做学问的,不只是为了做教程打着出书的幌子,那请扪心自问,有没有真正深入的内核(如果js有内核这么一说的话,我不管到底说的是core还是kernal)

当然,看过楼主这教程的人的水平参吃不齐,有些人还没到这一步,看完肯定有较好的,也有失望的,希望楼主不只是为了哗众取宠

楼主自重啊楼主!!!
57 楼 sky54521 2011-01-27  
abruzzi 写道
xzxw1115 写道
感谢楼主的分享奉献精神,看不惯没有实际行动而到处扣字眼的人,书名是人起的,作者喜欢叫什么就叫什么,顶楼主,分享万岁,期待你更多文章.


现在这个版本可能还当不起这个名称,但是我会努力让其当的起。孔子曰:“名不正则言不顺,言不顺则事不成”,可能有标题党的嫌疑,我也屡次说明,这个是第0版...的整理稿,但是貌似很多人不习惯也不喜欢看上下文,呵呵。



楼主,我觉得你应该拿一种js的解析器/编译器/解释器来说明一下(就是把js语言文本的执行过程写一下,即:从js代码的解析过程到浏览器的展现过程)

如果楼主能把这整个过程写详细了,我想没人再感说你不配用“内核”这个名字的

期待楼主能帮我解惑
56 楼 abruzzi 2011-01-27  
xzxw1115 写道
感谢楼主的分享奉献精神,看不惯没有实际行动而到处扣字眼的人,书名是人起的,作者喜欢叫什么就叫什么,顶楼主,分享万岁,期待你更多文章.


现在这个版本可能还当不起这个名称,但是我会努力让其当的起。孔子曰:“名不正则言不顺,言不顺则事不成”,可能有标题党的嫌疑,我也屡次说明,这个是第0版...的整理稿,但是貌似很多人不习惯也不喜欢看上下文,呵呵。
55 楼 vb2005xu 2011-01-27  
你们这样写创建类么? 我也发个我写的

xu.pkg('xu._class') ;
(function() {
	xu.setAppInf('SYS_CLASS_NS','xu._class.sys');
	xu.setAppInf('USER_CLASS_NS','xu._class.user');
	
	xu.apply(xu._class,{
		create: function(pkg_n,class_n,p_class,class_impl,is_override){			
			if (xu.verify._null(class_n) || class_n === ""){ return null ;}			
			try {
				var $t_class = eval(pkg_n + "." +class_n);
				if (this.exist($t_class)) {
					var ovr = is_override || false ;
					//trace( "Exist: " + class_n + " Override:" + ovr );
					if (!ovr){return null ;}
				}
			}
			catch(e){
				//如果出异常,说明该类没有定义
			}
					
			if (xu.verify._null(pkg_n) || pkg_n === ""){
				pkg_n = xu.getAppInf('USER_CLASS_NS') ;
			}
			$this_pkg = xu.pkg(pkg_n);	
			//定义父类,将子类的原型 指向父类
			if (xu.verify._null(p_class) || p_class === "" || p_class == 'XClass'){
				p_class = xu._class.sys.XClass ;//这个类在匿名函数中创建
			}
			//定义类
			$t_class = $this_pkg[class_n] = function(){};
			$t_class['__instance_count__'] = 0 ;
			
			// 将子类的原型 指向父类,以此获取属性继承
			$t_class[__proto] = new p_class();
			var __superclass__ = ($t_class[__proto]['__str__']) ? 
				$t_class[__proto]['__str__'](true): 'Object' ;
				
			xu.apply($t_class[__proto],{
				'__pkg__': pkg_n ,			
				'__superclass__': __superclass__,
				'__class__': class_n
			});	
			
			if (!$t_class[__proto]['__str__']){
				$t_class[__proto]['__str__'] = function(isShort){
					if (!isShort)
						return "[class: " + this.__pkg__ + "." + this.__class__ + "]" ;
					return this.__pkg__ + "." + this.__class__ ;
				}			
			}
			
			if (xu.verify._obj(class_impl)){
				xu.apply($t_class[__proto],class_impl);
			} 
			return $t_class ;	
		} ,
		
		/**
		 * 验证类是否存在
		 * @param {String} $class
		 * @return {Boolean}
		 */
		exist: function($class){
			if (xu.verify._func($class)) return true ;
			return false ;	
		}
	});
	//定义基类, 用于框架中所创建的类的基类.
	xu._class.create(xu.getAppInf('SYS_CLASS_NS'),'XClass',Object,{'desc': 'A System Base Class'});	
	Class = xu._class ;
})();
54 楼 xzxw1115 2011-01-27  
感谢楼主的分享奉献精神,看不惯没有实际行动而到处扣字眼的人,书名是人起的,作者喜欢叫什么就叫什么,顶楼主,分享万岁,期待你更多文章.
53 楼 vb2005xu 2011-01-27  
kyfxbl 写道
fch415 写道
花了3分钟,掠读了你的“JS内核”一书。

我的评价是:
1、很多概念自己都没整明白,就敢写书了。比如:this、闭包、内存泄漏、对象定义。
2、很多知识点都没有章节。比如:作用域、引用传递还是值传递。
3、很多机制的阐述上不深入,也能叫Core?

总结:
这是一本只适合初学者看看的JS基础的书,其文字简明、通俗、直白,喜欢以代码例子说明概念,适合作为内部培训材料。

由于你按照书的标准在写,则很多深入概念上存在“误人子弟”的作用。所以我建议你在一些复杂知识点上作"免责申明":该章节的文字并不代表完全真实的概念或机理,仅作为通俗简介来看待,读者意会即可。


呵呵,我作为JSDK的作者,尚不敢贸然写书。现在,敢以书的形式写教程的人真是越来越多了!


你倒是写点啊,光说不练


支持楼主 对js可以算是精通JS了,写的很好,有的东西我确实知道怎么用,但是让我说我就表达不出来,强烈支持
52 楼 huangheyuan1229 2011-01-27  
下载了还这么多废话,真看不惯有些人的行径,不喜欢可以滚啊,谁求着你看
51 楼 abruzzi 2011-01-27  
javacoreSZ 写道
bugmenot 写道


所谓js内核应该是承载js的chrome中使用的js解析器v8
如果你深入v8你再来说js内核吧大哥~~~
大大连解析器和解释器也没分清楚就拿V8举例,且不说V8内部也没有解释器


别太抠这种概念细节的东西,javaeye里也不适合抠这个。
不管什么器,最终还是要把一程序员写的字符串编译为虚拟机或者物理机能理解的代码而已。

我认为这本书要能叫core,javascript语言的一些能被应用人员使用的特性如闭包等,结合着Runtime Environment讲是必要的。
至于编译过程中用了啥解析技术如LR,LALR,LL.....用了啥属性文法和翻译方案,生成代码优化到什么程度,是否带jit等等,做为application coder来说都是太过于黑盒的东西。一笑而过即可。



嗯,运行上下文这块我确实遗漏掉了,我再整理一下,谢谢你的意见。
50 楼 javacoreSZ 2011-01-27  
bugmenot 写道


所谓js内核应该是承载js的chrome中使用的js解析器v8
如果你深入v8你再来说js内核吧大哥~~~
大大连解析器和解释器也没分清楚就拿V8举例,且不说V8内部也没有解释器


别太抠这种概念细节的东西,javaeye里也不适合抠这个。
不管什么器,最终还是要把一程序员写的字符串编译为虚拟机或者物理机能理解的代码而已。

我认为这本书要能叫core,javascript语言的一些能被应用人员使用的特性如闭包等,结合着Runtime Environment讲是必要的。
至于编译过程中用了啥解析技术如LR,LALR,LL.....用了啥属性文法和翻译方案,生成代码优化到什么程度,是否带jit等等,做为application coder来说都是太过于黑盒的东西。一笑而过即可。

49 楼 kyfxbl 2011-01-27  
严重支持楼主,楼上有些人,除了发牢骚和无脑攻击,还能干啥?真觉得自己有水平,你也整点教程(如楼主),开源(如温少)出来呗。在论坛上吹牛,有什么意思,搞点实际的
48 楼 kyfxbl 2011-01-27  
fch415 写道
花了3分钟,掠读了你的“JS内核”一书。

我的评价是:
1、很多概念自己都没整明白,就敢写书了。比如:this、闭包、内存泄漏、对象定义。
2、很多知识点都没有章节。比如:作用域、引用传递还是值传递。
3、很多机制的阐述上不深入,也能叫Core?

总结:
这是一本只适合初学者看看的JS基础的书,其文字简明、通俗、直白,喜欢以代码例子说明概念,适合作为内部培训材料。

由于你按照书的标准在写,则很多深入概念上存在“误人子弟”的作用。所以我建议你在一些复杂知识点上作"免责申明":该章节的文字并不代表完全真实的概念或机理,仅作为通俗简介来看待,读者意会即可。


呵呵,我作为JSDK的作者,尚不敢贸然写书。现在,敢以书的形式写教程的人真是越来越多了!


你倒是写点啊,光说不练
47 楼 λ-lambda 2011-01-27  
Javakeith 写道
λ-lambda 写道
我作为UNIX2(还未发布)的作者,尚且不敢贸然写书...

说这些是什么意思?


往前翻翻,怎么都不看上下文呢?
46 楼 Javakeith 2011-01-27  
λ-lambda 写道
我作为UNIX2(还未发布)的作者,尚且不敢贸然写书...

说这些是什么意思?
45 楼 bugmenot 2011-01-26  
abruzzi 写道
我说的“与其他语言不同”的意思是,像在C语言中,不通过指针,而是局部变量的话:

#include <stdio.h>

typedef struct{
	int value;
}s_integer;

int main(int argc, char *argv[]){
	s_integer a;
	s_integer b, c;
	
	b = a;
	c = a;
	
	a.value = 15;
	
	printf("%d\n", a.value);
	printf("%d\n", b.value);
	printf("%d\n", c.value);
}


修改a,并不会影响到b,c。但是如果a.value=15;这条语句放到b=a,c=a之前的话,则会得到不同的结果。

但举例应该拿对等或相似的概念来对比,既然是讲解引用,应该拿其它语言的引用来对比才对。所以如果拿Java、C#、ActionScript 3等语言的引用来跟JavaScript的对比,会看到它们非常相似,并没有多少“不同”。
而这里的C语言例子不合适在于,a, b, c都不是引用,它们都是C语言的结构体的值,而C语言的结构体是值类型而不是引用类型的,概念上差很多,并不能说这是JS与C“在引用上的差异”。

相关推荐

    JavaScript内核系列 pdf

    JavaScript内核系列是一份深入探讨JavaScript编程语言及其内核的宝贵资源,对于正在学习或从事JavaScript开发的学生和程序员来说,它提供了丰富的知识和技术指导。这份资料详细阐述了JavaScript的各个方面,包括语法...

    JavaScript内核高级教程

    JavaScript内核高级教程 对javascript的深入理解

    JavaScript内核系列.pdf

    ### JavaScript内核系列知识点概述 #### 一、JavaScript发展历程与特性 **JavaScript简史:** JavaScript的历史始于20世纪90年代,随着互联网的发展,静态网页已无法满足日益增长的用户交互需求。1996年,网景公司...

    《JavaScript内核系列》和《JavaScript面向对象基础》

    《JavaScript内核系列》和《JavaScript面向对象基础》这两本书籍是深入理解JavaScript语言核心机制和面向对象编程的重要参考资料。JavaScript作为一种广泛应用于Web开发的脚本语言,其内核和面向对象特性对于开发者...

    javaScript 内核解析

    JavaScript,作为一种广泛应用于Web开发的脚本语言,其内核解析是深入理解并高效使用它的关键。本文将探讨JavaScript的历史、基本概念以及它在Web开发中的应用。 JavaScript的诞生源于20世纪90年代,网景公司...

    JavaScript深入系列JavaScript专题系列ES6系列React系列

    首先,"JavaScript深入系列"着重于讲解JavaScript的基础与进阶概念。JavaScript作为一门动态类型的脚本语言,其核心包括变量、数据类型、控制结构、函数、对象、原型链、闭包等。深入理解这些概念,可以帮助开发者...

    深入理解JavaScript系列

    第3部分深入探索JavaScript,介绍了语法、值、运算符、布尔类型、数字、字符串、语句、异常捕获、函数、变量、对象与继承、数组、正则表达式、Date、Math、JSON、标准全局变量、编码和JavaScript、ECMAScript 5的新...

    IJavascript是用于Jupyter笔记本的javascript内核.zip

    “IJavascript是用于Jupyter笔记本的JavaScript内核”这个主题揭示了一个关键的信息——JavaScript现在不仅可以用于前端和后端开发,还可以在数据分析和科学计算领域发挥作用。IJavaScript是一个项目,它为Jupyter ...

    JavaScript权威指南(第6版)中文版.pdf百度网盘下载地址

    根据提供的文件信息,我们可以推断出这是一本关于JavaScript编程语言的专业书籍——《JavaScript权威指南》第六版的中文版本,并提供了该书PDF格式的百度网盘下载链接。下面将基于这个信息来提炼出相关的JavaScript...

    JavaScript权威指南第五版

    JavaScript程序员构建JavaScript应用程序时不可获缺的参考书,涉及到JavaScript在Web2.0中的应用

    精通JavaScriptPDF版本下载.txt

    根据提供的文件信息,我们可以推断出这是一份关于《精通JavaScript》这本书的PDF版本下载链接。但是,为了更好地满足您的需求,我将基于这个主题展开更详细的解释与介绍,包括JavaScript的基本概念、特点以及学习...

    X5内核与原生内核对比

    X5内核包含了TBS(腾讯浏览服务)框架,提供了更强大的JavaScript执行能力、更快的页面加载速度和更好的多媒体支持。它还具备智能预加载、页面渲染优化等功能,旨在提升浏览速度和流畅度。 相比之下,原生内核通常...

    JavaScript权威指南(英文版)

    This fourth edition of the definitive reference to JavaScript, a scripting language that can be embedded directly in web pages, covers the latest version of the language, JavaScript 1.5, as supported ...

    javaScript经典实例

    "JavaScript经典实例"这个主题涵盖了一系列经过实践验证的代码片段和实用技巧,旨在帮助开发者深化对JavaScript的理解并提升技能。 描述中提到“内容丰富”,意味着这个压缩包可能包含了各种类型的JavaScript应用...

    JavaScript 编程精解 中文第三版

    JavaScript 编程精解 中文第三版 JavaScript 编程精解 中文第三版

    JavaScript—The Definitive Guide, 6th Edition[JavaScript权威指南](英文版)

    《O'Reilly精品图书系列:JavaScript权威指南(第6版)》讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScriptAPI。《O'Reilly精品图书系列:JavaScript权威指南(第6版)》涵盖了HTML5和ECMAScript5,很多...

    JavaScript学习资料全面整理

    4. **函数**:JavaScript中的函数是第一类对象,可以作为变量赋值、作为参数传递、作为返回值。函数表达式和函数声明是两种定义函数的方式,其中匿名函数和箭头函数是常见的形式。 5. **对象与原型**:JavaScript的...

    OpenHWGroup的CORE-VRISC-V内核集的文档_JavaScript_CSS_下载.zip

    在"OpenHWGroup的CORE-VRISC-V内核集的文档_JavaScript_CSS_下载.zip"这个压缩包中,我们可以推测包含的资源主要是关于CORE-V RISC-V内核的文档,以及可能用于展示或交互的JavaScript和CSS文件。这些文件可能是用于...

    韩顺平十天javascript全套笔记(整理版).pdf

    韩顺平十天javascript全套笔记(整理版).pdf

Global site tag (gtag.js) - Google Analytics