论坛首页 Web前端技术论坛

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

浏览 32156 次
精华帖 (8) :: 良好帖 (3) :: 新手帖 (18) :: 隐藏帖 (1)
作者 正文
   发表时间:2011-01-26  
sky54521 写道
bugmenot 写道
sky54521 写道
这种水平的js剖析能称得上“内核”?!
基本是js入门水平,js是动态编程语言,一切都是动态的

所谓js内核应该是承载js的chrome中使用的js解析器v8
如果你深入v8你再来说js内核吧大哥~~~

大大连解析器和解释器也没分清楚就拿V8举例,且不说V8内部也没有解释器


我靠,js的解析器和解释器有啥区别?
那你的意思分别指的是?


解析器,解释器之类区别的建议看看这个http://www.iteye.com/topic/492667已经被转了N++次的文章,写的很详细,也很优秀。
0 请登录后投票
   发表时间:2011-01-26  
sky54521 写道
这种水平的js剖析能称得上“内核”?!
基本是js入门水平,js是动态编程语言,一切都是动态的

所谓js内核应该是承载js的chrome中使用的js解析器v8
如果你深入v8你再来说js内核吧大哥~~~



1. 为什么叫“内核”,建议先翻下之前的评论.
2. 你的观点“JS是动态语言”,和这个系列是否叫“内核”没有一丁点的关系,请提供充分的论据。
3. JS的引擎,如上边这位朋友bugmenot所列举,有很多的,为什么要深入V8才能说内核,也请给出充分的理由。

0 请登录后投票
   发表时间:2011-01-26  
bugmenot 写道
楼主大大,ECMA-262的名字是ECMAScript,但从来没有过叫ECMAScript-262的东西

1.2.3的描述也过时了,从现在这个时刻来看新的主流浏览器,全部都是会编译JS的了
Chrome Chromium - V8,只编译不解释,新版本引入了多层编译
FireFox 4 - JaegerMonkey,基本上只编译并且是多层编译,一开始就编译而不解释,只在trace阶段短暂解释一下
Safari - Nitro,只编译不解释
Opera 10.5 - Carakan,热点编译
IE9 - Chakra,热点编译

1.3.3,UltraEdit也用JavaScript做嵌入脚本,好使

2.1 Date和RegExp等也是内建的对象类型吧

2.1.1 “数字”在JavaScript里的表现要符合IEEE 754双精度浮点数的规定,值得强调
ECMA 262 写道
The Number type has exactly 18437736874454810627 (that is, 264−253+3) values, representing the double-precision 64-bit format IEEE 754 values as specified in the IEEE Standard for Binary Floating-Point Arithmetic

不过现在主流高性能JS引擎都想办法优化它,在合理范围内用小整数来存数字

3 ECMAScript与JSON是两个独立的规范,它们甚至在细微处有不兼容的地方,所以用JSON来解释JavaScript对象是不合适的。ECMAScript Harmony还专门为解决与JSON间的兼容性问题而有大量讨论。

sky54521 写道
这种水平的js剖析能称得上“内核”?!
基本是js入门水平,js是动态编程语言,一切都是动态的

所谓js内核应该是承载js的chrome中使用的js解析器v8
如果你深入v8你再来说js内核吧大哥~~~

大大连解析器和解释器也没分清楚就拿V8举例,且不说V8内部也没有解释器



谢谢你的细心,也谢谢你提出的问题,我正在做校正,包括错别字,名词的不统一等问题。
0 请登录后投票
   发表时间:2011-01-26   最后修改:2011-01-26
楼主大大,这边继续

3.1.3 原型不是JavaScript特有的概念。最初的JavaScript不是基于原型的。JavaScript也受到80年代末一种基于原型的语言Self的影响,后来才加入了原型。楼主大大可参考http://stackoverflow.com/questions/1951972/prototype-based-language
JavaScript通过原型访问属性是“copy-on-write”,读访问的过程跟书中所述相似,写访问直接在当前对象上赋值

7.3.1 现在JavaScript已经不流行引用计数方式管理内存,主流都转向标记清除或其它tracing算法为基础。
IE的JScript从一开始就是标记清除式,而VBScript则引用计数。IE容易引发内存泄漏主要在JS与DOM交互时,这个边界上是引用计数的。假如有一个DOM节点被附加了一个JS对象,而该JS对象里又有属性指向那个DOM节点,这种引用关系就很容易引发内存泄漏。跟闭包没直接关系。

8.1.1 引用,书中的例子不就跟Java的一样嘛,算不上“跟其他语言不同”
0 请登录后投票
   发表时间:2011-01-26  
bugmenot 写道
楼主大大,这边继续

3.1.3 原型不是JavaScript特有的概念。最初的JavaScript不是基于原型的。JavaScript也受到80年代末一种基于原型的语言Self的影响,后来才加入了原型。楼主大大可参考http://stackoverflow.com/questions/1951972/prototype-based-language
JavaScript通过原型访问属性是“copy-on-write”,读访问的过程跟书中所述相似,写访问直接在当前对象上赋值

7.3.1 现在JavaScript已经不流行引用计数方式管理内存,主流都转向标记清除或其它tracing算法为基础。
IE的JScript从一开始就是标记清除式,而VBScript则引用计数。IE容易引发内存泄漏主要在JS与DOM交互时,这个边界上是引用计数的。假如有一个DOM节点被附加了一个JS对象,而该JS对象里又有属性指向那个DOM节点,这种引用关系就很容易引发内存泄漏。跟闭包没直接关系。

8.1.1 引用,书中的例子不就跟Java的一样嘛,算不上“跟其他语言不同”



我印象中BE的《history of javascript》中,说到关于当时设计JavaScript时从self, scheme, 和C中获得的灵感,至于是时间上我确实不清楚。

垃圾回收及内存泄漏等问题在这个版本中描述的比较简单,主要是由于我对有些算法还没有深入研究,不便多说,因此篇幅较短,我会找时间专门来研究。

我说的“与其他语言不同”的意思是,像在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之前的话,则会得到不同的结果。


总之,还是很感谢你,希望读到/关注此系列的朋友能像你一样,言之有物,条理分明。而不是纯粹的牢骚或者攻击。
0 请登录后投票
   发表时间: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“在引用上的差异”。
0 请登录后投票
   发表时间:2011-01-27  
λ-lambda 写道
我作为UNIX2(还未发布)的作者,尚且不敢贸然写书...

说这些是什么意思?
0 请登录后投票
   发表时间:2011-01-27  
Javakeith 写道
λ-lambda 写道
我作为UNIX2(还未发布)的作者,尚且不敢贸然写书...

说这些是什么意思?


往前翻翻,怎么都不看上下文呢?
0 请登录后投票
   发表时间:2011-01-27  
fch415 写道
花了3分钟,掠读了你的“JS内核”一书。

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

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

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


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


你倒是写点啊,光说不练
0 请登录后投票
   发表时间:2011-01-27  
严重支持楼主,楼上有些人,除了发牢骚和无脑攻击,还能干啥?真觉得自己有水平,你也整点教程(如楼主),开源(如温少)出来呗。在论坛上吹牛,有什么意思,搞点实际的
0 请登录后投票
论坛首页 Web前端技术版

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