论坛首页 Web前端技术论坛

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

浏览 32159 次
精华帖 (8) :: 良好帖 (3) :: 新手帖 (18) :: 隐藏帖 (1)
作者 正文
   发表时间:2011-01-27   最后修改:2011-01-27
bugmenot 写道


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


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

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

0 请登录后投票
   发表时间: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来说都是太过于黑盒的东西。一笑而过即可。



嗯,运行上下文这块我确实遗漏掉了,我再整理一下,谢谢你的意见。
0 请登录后投票
   发表时间:2011-01-27  
下载了还这么多废话,真看不惯有些人的行径,不喜欢可以滚啊,谁求着你看
0 请登录后投票
   发表时间:2011-01-27  
kyfxbl 写道
fch415 写道
花了3分钟,掠读了你的“JS内核”一书。

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

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

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


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


你倒是写点啊,光说不练


支持楼主 对js可以算是精通JS了,写的很好,有的东西我确实知道怎么用,但是让我说我就表达不出来,强烈支持
0 请登录后投票
   发表时间:2011-01-27  
感谢楼主的分享奉献精神,看不惯没有实际行动而到处扣字眼的人,书名是人起的,作者喜欢叫什么就叫什么,顶楼主,分享万岁,期待你更多文章.
0 请登录后投票
   发表时间:2011-01-27   最后修改: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 ;
})();
0 请登录后投票
   发表时间:2011-01-27  
xzxw1115 写道
感谢楼主的分享奉献精神,看不惯没有实际行动而到处扣字眼的人,书名是人起的,作者喜欢叫什么就叫什么,顶楼主,分享万岁,期待你更多文章.


现在这个版本可能还当不起这个名称,但是我会努力让其当的起。孔子曰:“名不正则言不顺,言不顺则事不成”,可能有标题党的嫌疑,我也屡次说明,这个是第0版...的整理稿,但是貌似很多人不习惯也不喜欢看上下文,呵呵。
0 请登录后投票
   发表时间:2011-01-27  
abruzzi 写道
xzxw1115 写道
感谢楼主的分享奉献精神,看不惯没有实际行动而到处扣字眼的人,书名是人起的,作者喜欢叫什么就叫什么,顶楼主,分享万岁,期待你更多文章.


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



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

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

期待楼主能帮我解惑
0 请登录后投票
   发表时间:2011-01-27  
如果楼主是想做学问的,不只是为了做教程打着出书的幌子,那请扪心自问,有没有真正深入的内核(如果js有内核这么一说的话,我不管到底说的是core还是kernal)

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

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


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



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

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

期待楼主能帮我解惑


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

跳转论坛:
Global site tag (gtag.js) - Google Analytics