标题: [推荐] 推荐一本JavaScript新书
  本主题由 Rimifon 于 2009-9-24 22:52 关闭 
asdf999
大恐龙
Rank: 4



UID 83793
精华 0
积分 707
帖子 260
威望 248
阅读权限 50
注册 2008-3-11
状态 离线
 
发表于 2009-9-19 03:36  资料  个人空间  短消息  加为好友  QQ
hax是个有意思的人,搬把凳子等直播.





readonly..
顶部
hax
无忧元老
Rank: 8Rank: 8



UID 76364
精华 2
积分 5024
帖子 364
威望 4661
阅读权限 90
注册 2007-9-24
来自 Shanghai
状态 离线
 
发表于 2009-9-19 03:44  资料  个人空间  主页 短消息  加为好友 
有意思 = 得罪人

顶部
css8
爬虫
Rank: 2



UID 93201
精华 0
积分 143
帖子 29
威望 24
阅读权限 20
注册 2008-11-3
状态 离线
 
发表于 2009-9-19 22:01  资料  个人空间  短消息  加为好友 


QUOTE:
原帖由 hax 于 2009-9-19 02:10 发表 习题时间到了。请指出以下叙述中都错在何处。上下文如有不明,请自行找样张搜索着看。

看得出hax是位有心人,读书比较认真,目光敏锐,勤于思考。

你引出了这么多语句,已经说明了你的用心,但是我又非常认真的阅读、斟酌了一番,没有发现什么技术和表述问题,还烦请你指正一下,是不是我是局内人,你是局外人的缘故。我非常乐意就你引出的每一句与你,以及大家进行深入沟通和交流。等我有时间后,我也就你引出的每句进行解释。
最好是你直接明说了,反正我还没有看出什么问题?

顶部
css8
爬虫
Rank: 2



UID 93201
精华 0
积分 143
帖子 29
威望 24
阅读权限 20
注册 2008-11-3
状态 离线
 
发表于 2009-9-19 22:43  资料  个人空间  短消息  加为好友 


QUOTE:
出现错误其实不可怕,牛逼如john resig,写的blog里有时也会犯点低级错误。但是一本书,仅仅两个样张出现那么多错误或至少是不严谨处,就说明该书没有经过认真的技术审阅。月影和winter同志我不知道是不是出于面子因素不好意思指出这本书的问题,只说不适合高手。但是作者还说“质量是绝对有保证的,不仅仅针对初学者,对于进阶者和高级读者来说一样非常受用。”这种话,如果是出版社为了销量而自我吹嘘,我也能够理解。但是作者自己说出来,就未免有点托大。

首先声明,本书是经过严格的编审程序一关关过的,并非你们想象得那样糊弄和随意。
我可以负责任的说,“质量是绝对有保证的,不仅仅针对初学者,对于进阶者和高级读者来说一样非常受用。”,这话一点没有自吹自擂,我敢于在这里再重复一遍,我敢于对于我写的这本书负全责。如果你经常买书,如果你经常看技术图书,你会明白我的话意,在当前严酷的图书市场和读书环境下,我能够用近一年的时间非常认真的写作一本书,可以说是非常罕见的,这个市场我是非常清楚的。作为一位多年的IT技术作者,我比谁都清楚IT图书的市情。有人从毛选中挑出了很多错别字,我在《JavaScript权威指南》中也挑出了不下20处的技术和印刷错误,当然本书也不可能完美无瑕。如果使用放大镜仔细读,可能会发现一些小问题,当然作为作者的我和出版社都希望这本书是完美无缺的,也真诚的希望大家刻意挑错,以利于我们改正。

本书最大特点就是性情中书,情感和思想比较盛行,如果你是一位技术高手,可能不习惯这种口水味,但是这正是广大初学者所需要的,请你能够理解,现在的初学者最害怕冰冷的语言和过于简洁得难于理解的思想。

QUOTE:
实际上此书就这两个样张来看,就不适合初学者看。最典型的第一章,书好不好,看第一章就知道大概。第一章本是引领章节,但是作者上来没头没脑的大杂烩,从罗列一些名词、概念,到js解析这样完全不适合初学者的话题,哪里见得到条理?给出的例子也完全没考虑到读者的接受程度。给我的感觉,作者只是想到哪里写到哪里,没有经过梳理和裁剪。书写厚不难,难的是写薄。我不知道这样的第一章是怎么通过责编的,当然考虑到出版社是飞思,在技术图书领域的名声一向不咋地。某人的评价是:“飞思的书我看来是误人子弟。国内很多书就是游离于这个档次,所以如果看了就很容易成为永久地业余程序员。”我说句不好听的,楼主这个第一章,业余味道就很重。

我不知道你是不是初学者?
什么是初学者?
出版社、编辑和作者比谁都清楚,整天与书和读者打交道,连这个最基本的问题都不明白,那就没法说了。我估计你是一位技术熟练者,有过深刻初学者的经历,但是这不能够代表现在的大部分初学者。所以你所谓的“就不适合初学者看”这个观点还真不敢苟同,只有看本书的市场才能够说明问题,历史会再次证明这个观点:越是骂得厉害的图书,市场肯定错不了。记住,真正购买本书的人不是经常在这里晃悠的人,而是那些对于JavaScript技术非常饥渴的广大初学者。

至于,第一章是大杂烩,是的,这个没有错,第一章具有前瞻性,它不是初学者的学习第一步,更像一章概览,目的很明确,就是让读者能够快速领略JavaScript技术精华部分。不要求读者去理解,相当于英语中的泛读。也许你没有仔细看看第一章的题引,它已经说明了本章的目标,很明确。如果你仔细看看第2章,就会发现,讲解的脚本慢慢降下来了,内容和语言平缓、踏实了很多。你也可以从第4章样章也能够看得出,第4章样章内容还很乱码,还很大杂烩吗?

“国内很多书就是游离于这个档次,所以如果看了就很容易成为永久地业余程序员”,这个是你的偏见,我不想与你理论,直接去认真读书和学习的人才能够体味其中的甘苦。

“我说句不好听的,楼主这个第一章,业余味道就很重。”,我很不理解,你在上面刚说了第一章起步过大,不适合初学者,现在又说太业余,难道第一章非要板起面孔说技术就是专业吗?

飞思是国内IT图书的品牌,你竟然如此下结论,看来你对于IT图书市场了解不是很深,遗憾。

QUOTE:
这两个样张的某些部分(例如讲类型自动转换的)还是可以的,也许其他部分会比较好,也许作者只是虽然已经写了很多书,但是就是不会写书的第一章……总之,我还不至于给它贴上滥书的标签。看得出,作者的技术水平还是ok的。但是技术水平不等于技术写作水平。作者很希望能写得比较幽默和轻松。最近有几本JS书也是如此,但是显然作者的这方面水平有待提高。比如我说真生动和装生动是有差别的。当然这是主观感受,作者一定不认可,我也没办法。但是凡事就怕比较。请和之前出的那两本比较吧。

作者写的书也不少了,我纳闷为什么找飞思?作者下次还是找个好点的出版社,至少有策划和责编会帮你把关,而不像飞思这种估计只会教你怎么忽悠和自吹自擂(虽然王婆卖瓜总是必要的,但是不能只会炒作)。

我的文笔在圈内是数得着,作为一位老的技术人员,老的技术写作人员,我还是很自信我的语言。至于你读起来是另一种味,或者读起来不适应,可能是你的口味问题,当然我的文笔还需要更上一层楼,让语言渐变得更平滑,让每位读者(包括你)都读起来很愉快。

电子工业出版社是四大名社,飞思是国内IT图书品牌,本书策划编辑是国内最著名的编辑,获得多项大奖,策划了很多经典图书,我就纳闷了你为什么还有这个偏见,或者是你不够了解,或者是“一书障目”?

[ 本帖最后由 css8 于 2009-9-19 22:56 编辑 ]

顶部
hax
无忧元老
Rank: 8Rank: 8



UID 76364
精华 2
积分 5024
帖子 364
威望 4661
阅读权限 90
注册 2007-9-24
来自 Shanghai
状态 离线
 
发表于 2009-9-20 02:16  资料  个人空间  主页 短消息  加为好友 
我已经列出了一些句子了,有些只要稍微实验一下就知道了。摆到你面前你还看不出问题,那我不得不怀疑你的人品。

例1:“但是对于数值直接量来说,不能够直接调用 toString()方法,必须使用小括号强制运算数值直接量后,再调用该方法”,“这是因为小括号运算符能够把数值转换为对象。”

a. typeof((1)) 按照你的理论应该返回 "object"
b. 运行一下 alert(1.123.toString()) 或者 alert(1e1.toString())

例2:“下面代码定义了包含 5 个元素的空数组。var a = [,,,,];”

请在FF、Safari、Chrome、Opera中运行一下

   提示:您可以先修改部分代码再运行


顶部
hax
无忧元老
Rank: 8Rank: 8



UID 76364
精华 2
积分 5024
帖子 364
威望 4661
阅读权限 90
注册 2007-9-24
来自 Shanghai
状态 离线
 
发表于 2009-9-20 05:42  资料  个人空间  主页 短消息  加为好友 


QUOTE:
首先声明,本书是经过严格的编审程序一关关过的,并非你们想象得那样糊弄和随意。

凡事声明就有用吗?严格不严格是靠嘴说的吗?可能过程并不随意,大家也很努力和辛苦,但是这不是评价标尺。

我随便列了一些问题你都觉得没问题,其实这并不奇怪。除了态度之外(这个话题另说),因为人总有盲区,如果一开始知道有问题,自然就不会这么写。我也不敢说我写的东西都没问题。实际上我在本论坛也有说错被抓出来的情况。

之所以人会犯错误,所以才要技术评审。然而这本书的两个样张里我随意看了一遍都有不下30处问题,你要告诉我这就是“严格的编审”,你说能让人信服吗?

就这点而言,此论坛的某些同志,比如月影、winter等,我希望你们要发发言,不要因为面子问题不声不响,这样其实是害了朋友(如果css8是你们的朋友的话)。

QUOTE:
我可以负责任的说,“质量是绝对有保证的,不仅仅针对初学者,对于进阶者和高级读者来说一样非常受用。”,这话一点没有自吹自擂,我敢于在这里再重复一遍,我敢于对于我写的这本书负全责。

嘿嘿,你写的书,当然要你负责。难道还要我负责不成?

再者,偶属于高级读者了吧(或者我已经不属于你的“读者群”,因而不计入),至少我不受用。请winter、月影等高级读者现身,说说你们受用不受用。

QUOTE:
如果你经常买书,如果你经常看技术图书,你会明白我的话意,在当前严酷的图书市场和读书环境下,我能够用近一年的时间非常认真的写作一本书,可以说是非常罕见的,这个市场我是非常清楚的。作为一位多年的IT技术作者,我比谁都清楚IT图书的市情。

“我好,是因为别人比我更差”,您是想说这个意思吗?技术图书市场的情况糟糕,人所共知。但是这不是作者为自己开脱的理由。如果你跟一个学生说,你写的作文不理想,学生回答:但是我很认真啊,我花了一天时间了,其他同学都10分钟就乱写一气的。你要怎么对他说呢?是跟他说,对不起,我错了,你写得很好!

当然偶不是自比你的老师,您写了这么多书,只有别人叫你老师的份。我只想说,如果作者是因为清楚行情,所以认为这样水准就已经是鹤立鸡群了,那不好意思,我只能说那只能算鸡立麻雀群。

QUOTE:
有人从毛选中挑出了很多错别字,我在《JavaScript权威指南》中也挑出了不下20处的技术和印刷错误,当然本书也不可能完美无瑕。如果使用放大镜仔细读,可能会发现一些小问题,当然作为作者的我和出版社都希望这本书是完美无缺的,也真诚的希望大家刻意挑错,以利于我们改正。

我有挑你错别字吗?我有挑你印刷错误吗?(除非你跟我说我挑出来的全都是编辑改错的和印刷印错的)
我有要求你完美无暇吗?我只是粗略的浏览一遍,这样就算拿放大镜仔细读了?
“真诚的希望大家刻意挑错”,言下之意是——凡是挑错就是刻意的而已罢。但是我“刻意”的挑您的错别字、印刷错误了没?您真够真诚的哦。

QUOTE:
本书最大特点就是性情中书,情感和思想比较盛行,如果你是一位技术高手,可能不习惯这种口水味,但是这正是广大初学者所需要的,请你能够理解,现在的初学者最害怕冰冷的语言和过于简洁得难于理解的思想。

主观问题我就不多说了,因为客观问题你也当看不到,更不要说来跟你探讨这些了。而且你认为初学者就是需要吃吃你的口水,那就更没啥好说的。
但是,我说此书不适合初学者,根本没有以你的文字差来作为理由。

QUOTE:
我不知道你是不是初学者?

是人都是由初学者过来的。我所庆幸的是,我从一开始就没看任何一本这种所谓为初学者写的书。

QUOTE:
什么是初学者?出版社、编辑和作者比谁都清楚,整天与书和读者打交道,连这个最基本的问题都不明白,那就没法说了。

如果出版社、编辑、作者都清楚,那为什么还会有那么多误人子弟的滥书?刚刚还说市况问题多多,这厢又说都明白。难不成就飞思和你是属于出淤泥而不染?

其实确实某些出版社、编辑和作者都明白,明白的是:初学者最好忽悠!

技术图书界就是这样滴。这里我又要批评本论坛的某些同志,你们看了个目录就真敢写书评啊!还有一句此书不一定适合技术高手,但是适合初学者——我知道你们不想趟这个混水,所以来一句不适合高手就脱了干系,但是那些初学者怎么办?特别是那些相信你们的初学者?

举例来说,初学者最忌什么?最忌就是一开始的基本概念和技术词汇出了偏差。这就要求,越是为初学者写的书,越是应该严谨从事。这里我拿偶的老上级,本版常客,也是我的好友aimingoo来举例,希望他不要介意(偶就是知道他气量大所以才敢说滴,嘿嘿)。他在他的那本书中对closure(闭包)术语的解说就有问题,连累一干粉丝就closure的定义争论不休。实际上,反而是高手们对于这种小节可以稍做忽略,因为aimingoo对于js元编程的思想和实践就够我们研究一壶了,词汇问题就纯属枝节了。饶是如此,closure还算是个疑难概念,但是本书作者居然能说出“浮点数是以字符串的形式进行存储的”,吾只有张口结舌了。

QUOTE:
我估计你是一位技术熟练者,有过深刻初学者的经历,但是这不能够代表现在的大部分初学者。

真厉害,一下就把我划出了大多数,归纳为一小撮了。

QUOTE:
所以你所谓的“就不适合初学者看”这个观点还真不敢苟同,只有看本书的市场才能够说明问题,历史会再次证明这个观点:越是骂得厉害的图书,市场肯定错不了。

历史早就证明:初学者最好忽悠。

越是骂得厉害的图书,市场肯定错不了。那是当然的,因为脑白金的市场就不错。

QUOTE:
记住,真正购买本书的人不是经常在这里晃悠的人,而是那些对于JavaScript技术非常饥渴的广大初学者。

我当然知道这一点,那就是:我批评也是白批评。经常在这里晃悠的,自然不会被忽悠。

所以我只是这两天抽风,在这里没事找事,给winter、月影还有本版版主等同志添点乱而已。

因为那些初学者活该要吃药的。就好象业界都知道技术培训市场的问题,但是说了也没用,该上当的还是要上当。

大家都心知肚明心照不宣,只是不愿意说出来罢了。何况技术圈子就那么大,抬头不见低头见,真的死掐,万一下次跳槽到一个单位咋办?万一我下次出书,人家也不给面子来死掐我……

QUOTE:
至于,第一章是大杂烩,是的,这个没有错,第一章具有前瞻性,它不是初学者的学习第一步,更像一章概览,目的很明确,就是让读者能够快速领略 JavaScript技术精华部分。不要求读者去理解,相当于英语中的泛读。也许你没有仔细看看第一章的题引,它已经说明了本章的目标,很明确。

我只问一个问题,你第一章里扔出了js解析、词法分析、语法分析这样的重磅精华炸弹,你认为初学者需要学习这样的知识吗?如果需要,你后面哪个章节展开介绍了?如果不需要,那你扔出此精华的目的何在?

QUOTE:
“国内很多书就是游离于这个档次,所以如果看了就很容易成为永久地业余程序员”,这个是你的偏见,我不想与你理论,直接去认真读书和学习的人才能够体味其中的甘苦。

首先,这句话不是我说的,而是Tin(http://tin.zztin.com/)说的,您和飞思如一定要对号入座,群殴单挑都请找他。

不过我是有同感滴。国内技术书,常见急功近利、粗制滥造、剪刀浆糊、误人子弟,这是大家的共同感觉,背后当然有一些深层次原因,连你自己都说“严酷的图书市场”。可是一涉及到自己,竟就又变成了偏见了。

当然,不少人,不管看什么书,其实注定是要成为永久的业余程序员的。然而,人注定是要死的,并不是我生产的奶粉就可以掺杂“三花聚顶向您请安”的理由。

QUOTE:
“我说句不好听的,楼主这个第一章,业余味道就很重。”,我很不理解,你在上面刚说了第一章起步过大,不适合初学者,现在又说太业余,难道第一章非要板起面孔说技术就是专业吗?

唉,都说了“这是主观感受,作者一定不认可,我也没办法。”
这些话本来就是不好听的,而且又是一个主观评价,所以你不爱听,那我收回好了吧。楼主绝对是专业水准!专业到“据说”,专业到“至于谁对谁错,看来只有根据具体情况而定了。”

QUOTE:
飞思是国内IT图书的品牌,你竟然如此下结论,看来你对于IT图书市场了解不是很深,遗憾。

原来批评飞思的,就是“对于IT图书市场了解不是很深”,嘿嘿嘿。
其实飞思也不是没出过好书,比如《java与模式》(是飞思出的吧)我就很喜欢。但是这是个案,飞思主要是出什么类型书的,相信你比我清楚。

不过涅,我还要撇清一下(我真是没志气啊),我只是转载别人的话,你所谓“了解不是很深”的其实是这帮人:http://groups.google.com/group/B ... c6f4660544?hl=zh-CN

QUOTE:
我的文笔在圈内是数得着,作为一位老的技术人员,老的技术写作人员,我还是很自信我的语言。至于你读起来是另一种味,或者读起来不适应,可能是你的口味问题,当然我的文笔还需要更上一层楼,让语言渐变得更平滑,让每位读者(包括你)都读起来很愉快。

是我不适应!一定是我不适应。我是一小撮,我居然不知道作者是文笔了得,圈内数得着,老资格的技术写作人员!在我如此不明事理的“刻意”找茬下,作者还能有“让语言渐变得更平滑”之宏愿,还要让我更愉快,我惭愧得泪奔啊!不!我一定要愉快滴泪奔,不能辜负作者的凛然大义。

QUOTE:
电子工业出版社是四大名社,飞思是国内IT图书品牌,本书策划编辑是国内最著名的编辑,获得多项大奖,策划了很多经典图书,我就纳闷了你为什么还有这个偏见,或者是你不够了解,或者是“一书障目”?

四大名社、IT图书品牌、著名编辑、又获奖又经典,但是我就是不认帐,难怪你纳闷。

但是我也纳闷,我只是就看到的样张提出问题,关名社、名牌、名编什么事情?您要我了解什么?您一定要我了解原来此书是出自名社、名牌、名编?否则我对此书就不能说三道四了哦?

如果您只是对我对于飞思的一些看法不爽,那么如您所愿,我现在觉得,这书如果有什么问题,大概主要还是您自己的问题,跟飞思无关哪!

顶部
s_liangchao1s
爬虫
Rank: 2


UID 79729
精华 0
积分 148
帖子 20
威望 19
阅读权限 20
注册 2007-12-3
状态 离线
 
发表于 2009-9-20 10:04  资料  个人空间  短消息  加为好友 
呵呵....





求学
顶部
css8
爬虫
Rank: 2



UID 93201
精华 0
积分 143
帖子 29
威望 24
阅读权限 20
注册 2008-11-3
状态 离线
 
发表于 2009-9-20 10:35  资料  个人空间  短消息  加为好友 
我不想与你在这里打口水战,现在没有时间和精力。我不会因为你说什么而怨恨,当然也不会在意这些流言蜚语。

不过,我非常愿意与你就书中具体的问题进行交流、沟通一下,于己于人都是件好事儿:

QUOTE:
例1:“但是对于数值直接量来说,不能够直接调用 toString()方法,必须使用小括号强制运算数值直接量后,再调用该方法”,“这是因为小括号运算符能够把数值转换为对象。”

a. typeof((1)) 按照你的理论应该返回 "object"
b. 运行一下 alert(1.123.toString()) 或者 alert(1e1.toString())

toString()方法是Object的基本方法,对于值类型的数据是不允许直接调用的,所以当为值类型的数据调用toString()方法时,需要进行装箱操作,即类型转换。很多时候JS引擎能否自动帮助我们完成这个操作,在使用时,用户也可以为值类型的数据直接调用Object的方法。
在JavaScript中,小括号是一种比较灵敏的运算符,它能够根据表达式的运算环境执行对应的逻辑操作。对于 typeof((1)) 自然不会进行类型转换,但是alert((1).toString()) 就会把数值1转换为对象,而alert(1.toString()) 就会提示语法错误,显示缺少小括号运算符。而 alert(1.123.toString()) 或者 alert(1e1.toString())又为什么能够正确执行呢?这是一个很有趣的话题,也希望能够与你进行讨论。

[ 本帖最后由 css8 于 2009-9-21 22:03 编辑 ]

顶部
css8
爬虫
Rank: 2



UID 93201
精华 0
积分 143
帖子 29
威望 24
阅读权限 20
注册 2008-11-3
状态 离线
 
发表于 2009-9-20 10:41  资料  个人空间  短消息  加为好友 


QUOTE:
例2:“下面代码定义了包含 5 个元素的空数组。var a = [,,,,];”

请在FF、Safari、Chrome、Opera中运行一下

这个问题是浏览器兼容问题,在这里我想说明的问题是“当然,我们也可以使用数组直接量创建空数组,定义的方法是在逗号之间省去元素的
值即可,此时元素的默认值为 undefined。”,在举例时没有考虑浏览器的兼容问题,浏览器兼容问题重点在后面章节分解,非常抱歉,也谢谢你的提醒,

顶部
css8
爬虫
Rank: 2



UID 93201
精华 0
积分 143
帖子 29
威望 24
阅读权限 20
注册 2008-11-3
状态 离线
 
发表于 2009-9-20 10:49  资料  个人空间  短消息  加为好友 


QUOTE:
我随便列了一些问题你都觉得没问题,其实这并不奇怪。除了态度之外(这个话题另说),因为人总有盲区,如果一开始知道有问题,自然就不会这么写。我也不敢说我写的东西都没问题。实际上我在本论坛也有说错被抓出来的情况。

之所以人会犯错误,所以才要技术评审。然而这本书的两个样张里我随意看了一遍都有不下30处问题,你要告诉我这就是“严格的编审”,你说能让人信服吗?

没关系,咱们可以慢慢的就你所谓的“不下30处的问题”一个个进行交流和沟通,看看到底是什么问题,还是真的有问题,还是误解,这样也有利于本书的改进和完善。

顶部
月影
超级版主
Rank: 8Rank: 8



UID 24714
精华 9
积分 4243
帖子 1553
威望 1918
阅读权限 150
注册 2005-3-9
状态 离线
 
发表于 2009-9-20 11:01  资料  个人空间  主页 短消息  加为好友  QQ


QUOTE:
原帖由 css8 于 2009-9-20 10:35 发表
我不想与你在这里打口水战,咱们不妨就书中具体的问题进行交流、沟通一下:



toString()方法是Object的基本方法,对于值类型的数据是不允许直接调用的,所以当为值类型的数据调用toString()方法时,需要 ...

这个问题我认为应该是这样的,并不是对于值类型数据不允许直接调用,例如true.toString()、falsh.toString()、012.toString()、0x10.toString()都是可以的
1.toString()出错是因为解释器读到“1.”不知道这个“点”究竟该作为小数点还是“.”操作符,或者也就是说在这里产生了一个“shift-shift conflit”

数组的那个问题是因为非IE浏览器允许保留最后一个逗号,对JSON也是一样的

我觉得有些问题hax说的在理,而且他如此仔细阅读了你的样章,有些问题提得真的不错,css8你应该虚心接受
我知道css8你写这本书不容易,一些不太明显的“坑”我也没有刻意说,或者有的时候不由自主地忽略掉
这些坑有一定经验的老鸟们固然一般不会掉进去,但初学者确实容易摔跤,我之前也没考虑充分这些

写书不容易,比写代码难多了,唉。。。

[ 本帖最后由 月影 于 2009-9-20 11:08 编辑 ]

顶部
hax
无忧元老
Rank: 8Rank: 8



UID 76364
精华 2
积分 5024
帖子 364
威望 4661
阅读权限 90
注册 2007-9-24
来自 Shanghai
状态 离线
 
发表于 2009-9-20 13:04  资料  个人空间  主页 短消息  加为好友 
css8同志,其实我已经很克制地在评论了。尤其是,我从来没有否定过你的技术水平。从一开始我就肯定你的技术水平和技术视野是ok的。我甚至都没有质疑你的态度,尽管这么些个低级错误直接就反映了一切。我只是把问题归结于,你的写作水平需要提高,和出版社没有尽到技术评审的责任。但是看看你的回复,有一点点反省吗?还在强词夺理,死不认错。真要我把问题一个一个说出来?到那个地步,我是不会给你留口德的。

我不知道是谁故意要把一个正常的书评(难道只有吹捧的才算正常书评吗)引向口水战。尤其是你的回复透露出一些阴戾的气息。又说不怨恨,又暗指所有对你的批评都是“流言蜚语”。

我早先还没有注意到之前你反击一些批评者时所做的,现在才注意到winter都把一些信息给删掉了。我现在想想,也许是我不应该来碰你的。因为这个圈子里有不少作者其实就是这样,容不得别人一点点批评,哪怕这批评已经大大的留有余地。

不过已经评论到这个份上,我就转个某技术出版社(你所谓四大名社之一吧)作译者群内部论坛里的评论作为结束,希望对你有所触动:

“现在这种人太多了:有一定的技术水平,做过不少事,但真要写书向别人教授技术,就立马暴露出了基本功不足的问题。出错不可怕,怕的是死不认账……XXX以前批评过一些圈内人喜欢互相吹捧的不良现象。这正是一例。”

顶部
Aiming
霸王龙
Rank: 6Rank: 6



UID 7929
精华 3
积分 1419
帖子 130
威望 820
阅读权限 70
注册 2004-1-11
状态 离线
 
发表于 2009-9-20 21:02  资料  个人空间  短消息  加为好友 
对于要不要回这个贴,我还是挺纠结的。既然几位老版都来讲话,又有Hax在这里垫底,我还是来讲讲。但是,老实说,你们口水你们的口水,我是来讨论技术问题——打酱油、路过、真巧呵。这里是51js。原本一个广告贴,被搞到骂战实在无趣。回到技术上来,纯说说技术,css8也务一下实,不要拿“反正我还没有看出什么问题”这样的话来填数。

我只说技术。随便说,hax讲闭包那章写得有点乱,我认账。呵呵。

关于hax提到的一大堆问题,我来理一下:

QUOTE:
这个作用域链(Box.prototype.constructor.constructor.prototype)很长,长得几乎能够让
人背过气,它 是什么玩意?

“作用域(链)”通常是一个运行期的概念。在静态讨论它时,通常是以代码块(代码上下文位置)来做参考的。而作者列出了一个长长的属性存取,又说它是“作用域(链)”,是概念上出了问题。作者举的这个例子,只能用于讨论原型继承方面的一些问题,与作用域无关。

QUOTE:
从底层来看对象,对象就是一系列属性的集合,这与其他语言中的列表结构类似。

“对象=属性包”,这个简单而生动的定义是anders说过的,我也常常拿来讲给别人听。所以这里没错。但hax用红色标出了“列表”两个字,他的意思是存疑于:“对象”与“列表”有什么关系吗?这还真是个问题。
1、在Delphi里面,TList与TStringList是两件事。TList是指针列表,没有“名-值”概念,所以TList不适于跟“对象”来做比较,反倒是说“对象跟TStringList有些类似”是可以的。但是,作者在书里没有指出“其它语言”是哪一种,所以这里就不好讲了。
2、再说,以《数据结构》这样的教材为例,列表也是没有“名-值”概念的,所以不适宜与“对象”来比较。
3、其三,作者原意是“从底层来看对象”,那就整个儿不对了。底层来看对象,对象其实不是“列表”这种结构的。(在SpiderMonkey的实现中,)它是表没错,但是是链表。

QUOTE:
例如,a 引用 o,但是如果 o 的值发生了变化,则 a 就不指向 o 了

1、一般来说,“a引用o”,在代码上的含义是:
a.x = o;

2、接下来,作者说,“如果 o 的值发生了变化”,那么代码上的含义是:
o = y;

o.mmm = nnn;

3、再接下来,作者说,“则 a 就不指向 o 了”。请问,作者的陈述正确吗?
(1)其实a从来就没有指向过o。因为a与o并不是同一个东西,如果a指向o,就是同一个东西的引用关系了。
(2)如果说a.x引用指向了o,那么上述的过程发生后,a.x的引用关系其实并没有发生变化。
综上:作者表达确有问题。

QUOTE:
o = new Array(); // 覆盖对象o

这个其实没什么问题。只是我常用“重写”,以及“重写变量o”。因为这里与o是不是一个对象没关系。

QUOTE:
各家浏览器的JavaScript 引擎也各不相同,分 歧最明显的就是 DOM实现部分。

老实说,你讨论JavaScript就成了,把DOM拉进来做什么?DOM、CSS与JS三者是同一层级上的东西,按你的说法,却是JS包括了DOM——那么ECMA Script也该对DOM做标准化了?

QUOTE:
IE,没有什么好说的了,一个狂妄的巨人。它最先提供支持 W3C DOM 标准和XMLHttpRequest 组件,但却是最后一个完全支持客户端JavaScript 语言标准的浏览器。

这个,历史问题。翻书吧。css8与hax各拿证据便是。

QUOTE:
但是 IE 却是用户体验最好的浏览器之一

个人品味。反正我也喜欢IE的用户体验。更何况css8还说是“之一”。

QUOTE:
Safari 浏览器的渲染引擎为 KHTML,这个引擎对于JavaScript 的支持比较差,无法与Mozilla 的 Gecko引擎和微软的 Trident 引擎相抗衡。

好与差的评判是主观的,无聊的。但Hax在这里指出的,却是说“KHTML其实并不包括JavaScript 支持”。css8大概从来没有签出过safari/webkit的代码包。“览器的渲染引擎为 KHTML”正确,但人家的JS引擎是叫JavaScript Core。而后面说Gecko与Trident 引擎,也错了。Mozilla的js引擎叫SpiderMonkey,微软的叫JScript。你讨论渲染引擎就罢了,却把JS引擎与之混为一谈……

QUOTE:
据说,Opera 浏览器对标准的支持度最高,在特殊用户群中具有很高的威望,但是它的瑕疵也非常明显。

这个,hax大概只是讲你的“据说”没有出处吧。老实说,opera对js标准的支持是很顽固的,例如标准不支持caller,opera就死活也不支持——我很郁闷。

QUOTE:
WebCore 和 WebKit 引擎都是 KHTML 引擎的衍生产品。

无言。你查历史吧。

QUOTE:
当然,也容易引发垃圾泛滥,甚至出现内存外溢的现象。

没去读原书这一段的上下文。但一般不会说“内存外溢”,而是“内存溢出”。如无必要,益尊重惯例吧。

QUOTE:
l 计算需要对象,于是就产生了数据。
l 计算需要效率,于是就产生了类型。
l 计算需要控制,于是就产生了变量。

第一句,如果你不打算与“Object”混淆。建议改成“计算需要目标”。
第二句,类型,与效率有必然关系吗?
第三句,“计算的控制”,通常就成逻辑了。变量或变量名,其实最早的概念是叫“引用数”的。它不过是一个标识。所以,如果说“计算目标(或被计算对象)需要标识,所以产生了变量”,大概更好。

QUOTE:
而类型正是数据的单位,通俗地说就是计算机指令一次可以操作的数据块大小。
例如,双字节一次可以操作 32 位数据,……

老实说,这段太大了。我没读完。但作者说“如果没有各种数据类型,则计算机只有一个单位(即字节)……”,这是不负责任的。因为“字节”也是数据类型。放弃所有数据类型,以“纯粹的计算机”来讨论,则唯一单位是“位(bit)”。至于,如果要讨论到计算机的原理,以某类确定的机型而言,可以以总线类型来作为基本类型——这包括了寄存器、总线在操作位数上的一致性。例如32位机器,则可以说“32位整型”或者“双字(DWORD)”为基本类型。
又,正好又看到上文中的一个小错误“双字节一次可以操作 32 位数据”,这里应该是“16位”才对哦。

QUOTE:
面向对象就是对数据的一种抽象

面向对象是编程方法,而不是数据抽象。把前面的“面向”去了就对了。

QUOTE:
弱类型……当然这也是以牺牲开发速
度和效率为代价的,所以它成不了大气候

认识问题吧。不过不知道作者是如何比较得出这样的结论的。

QUOTE:
至于谁对谁错,看来只有根据具体情况而定了。

……

QUOTE:
在 任何语言中,值的操作都可以归纳为以下 3 个方面。复制值 l 传递值 l 比较值

值操作啊。这个好象作者没什么错。hax解释下下?

QUOTE:
更为有趣的是:浮点数是以字符串的形式进行存储的。

css8错了,除了在文本代码里面,没这么存储的。可以建议看看IEEE标准,或者看引擎源代码。

QUOTE:
一般不建议大家使用八进制数值直接量。因为很多时候,JavaScript 会误解析为十进制数值。

这种建议无意义的。用不用,是应用说了算。没有无聊到非得拿8进制来做事。再说,js里面,还有13、15、25进制的,有必要一一建议吗?

QUOTE:
但是对于数值直接量来说,不能够直接调用 toString()方法,必须使用小括号强制运算数值直接量后,再调用该方法

……

QUOTE:
如果字符串包含在双引号中,则字符串内可以包含单引号。反之,就不行了,但是在 VBScript 中就可以在单引号中包含双引号

“反之,就不行了”,这个你写个测试代码先?

QUOTE:
布尔型(Boolean)……所占据的空间也是最小的(仅有 1 个字节)

这个……仍然是4个字节。其实——道理上来说,还不止4个字节。你最好看看引擎源码。

QUOTE:
在对象中,当为属性设置值为 null 时,会提醒JavaScript 回收它们,无用也即无存在的价值,所以赋值 null 就等于判变量死刑(即删除变量)。

1、你前面在说“对象属性置null”,后面在说“变量置null“。这是两回事呀,二者没有推论关系的。
2、变量如果是指标识符,那么,“删除变量”这样的事情从来就不会发生。
3、很遗憾,全局变量不会被回收。因为保不齐什么时候在某个函数里面会来一个eval()语句,然后就访问到某个全局变量的标识符了。所以置null最多回收它的内存占用,但变量还是在的。
4、局部变量,是随闭包回收而回收的。

QUOTE:
JavaScript 数组的结构比较固定,仅支持定义一维数组,虽然这简化了数组操作,但是
扩展性比较差,你 不能够使用JavaScript 定义多维数组。这 种固化的结构也显示了JavaScript
语言的柔弱性

你的“柔弱性”判断是有问题的,我看不出推论的依据何来。另外,许多多维数组的特性,可以通过交错数组来得到。这个在《程序设计语言》这本书里给出过解释。所以不必认为JS没有多维数组是“多么大的牺牲”。

QUOTE:
下面代码定义了包含 5 个元素的空数组。var a = [,,,,];

存在引擎兼容性问题。好象前面有人解释过了。

QUOTE:
如果属性值是函数,则该属性就成为对象的方法,读取这个特殊的属性值时,就必须附加小括号运算符

“读取这个特殊的属性值时”,其实不需要加括号运算符。反倒是“执行/调用”它时,才需要加的。这个,作者在概念的陈述上,真的不严谨。

QUOTE:
这是因为小括号运算符能够把数值转换为对象。

没上下文,不讨论。

QUOTE:
如果读者分析Google 网站的 JavaScript 程序,变量命名非常简洁,一般都为 1 或 2 个字母组成,这样做能够提高开发速度,便于书写

你能下载的Google网站的代码,是混淆过的。
如果你真要看Google的代码,你应该看看他们在Google map上公开的那几份。你就知道,他们的变量命名习惯不是你说的这样了。

QUOTE:
如果我们为变量a 赋值为 null,则 JavaScript 垃圾回收器就知道这个变量也没有
用,于是把这个变量视为垃圾一并进行回收(栈区),也就是说,如果一个变量、属性、元
素或对象被赋值为 null,也就意味着它们是无用的垃圾了

1、回收与所谓“栈区”无关。
2、变量回收问题,前面讲过了。
3、属性不能被置null回收的。但可以通过delete语句来回收。
4、元素(array element)同上述第三条;而且数组元素可以通过splice()来删除和回收。
5、对象赋值为null?与变量同义吧?有必要区分么?
……

顶部
hax
无忧元老
Rank: 8Rank: 8



UID 76364
精华 2
积分 5024
帖子 364
威望 4661
阅读权限 90
注册 2007-9-24
来自 Shanghai
状态 离线
 
发表于 2009-9-20 21:34  资料  个人空间  主页 短消息  加为好友 
爱民来了。我就不好意思摆谱了。

o = new Array(); // 覆盖对象o

其实爱民已经说出来了,合理的说法是“改写变量o”。这段完整的代码是这样滴:


var o = new Object(); // 创建对象
var a = o; // 定义引用
o = new Array(); // 覆盖对象o
alert(a == o); // 返回false,说明它们的指向具体对象不同了

例子本身其实没问题,但是注释就太随意,高手一目十行这种地方当然是忽略了,但是你考虑一个新手去读这一段呢?

我们在说对象o的时候,实际上是指的变量o所引用的那个对象。这本无问题,但是这里本来就要解说变量引用对象的问题,讲话还这样大大咧咧,请问你这个对象o到底是什么?什么叫覆盖这个对象o?对象o是被改变了?消失了?

你不要告诉我,你这个“对象”不是object而是target的意思。。。


不是我要抬杠。今天如果你是一个面向高端的书,我才不来挑这种问题。但是既然说是给初学者看,那你就这样折腾初学者?

什么叫初学者?初学者就是会拿着一两句话反复琢磨,奉为经典,如果觉得有看不明白,不会认为作者有问题,而是总先认为自己有问题,一定要找出一个合理解释的,结果走火入魔……而没想到这全缘于作者漫不经心的随便一注释。

顶部
hax
无忧元老
Rank: 8Rank: 8



UID 76364
精华 2
积分 5024
帖子 364
威望 4661
阅读权限 90
注册 2007-9-24
来自 Shanghai
状态 离线
 
发表于 2009-9-20 21:55  资料  个人空间  主页 短消息  加为好友 
但是 IE 却是用户体验最好的浏览器之一

这句话单独看,大概就是主观感受。但是放到上下文里你就发现奇怪了。

第一句是“IE 是目前最不符合标准的浏览器”,显然作者应该不是在说IE8,那么如果是IE6,难道ie6是用户体验最好的浏览器之一么?是不是加了之一就没问题?那 任何浏览器 都可以是体验最好的之一,也可以是体验最差的之一。这不是变成了废话?

何况后半句是“它提供超强的功能及扩展组件,让大部分用户爱恨交加”,你就更发现这整个一句的逻辑混乱了。ie怎么就提供超强的功能了?怎么算超强?如果ie体验好,功能超强,那干嘛用户爱恨交加?

其实作者在很多地方批评IE,言辞夸张,比如“一个狂妄的巨人”,但是又不跟人交待人家怎么狂妄了,一会儿又肯定ie是体验最好,但是也不说人家体验好在哪,一会儿又爱恨交加……作者说爱就爱说恨就恨,如果不是我们这些人对ie有所了解,肯定被搞得一愣一愣的!请问一个初学者听了这些话,他到底应该对ie如何评价?

这不是我们私下聊天,表达感想。作者既然是要给初学者谈谈,那就要为初学者负责,但我看作者这样搞法,只有把初学者搞到糊里糊涂,反正总之相信作者就对了。

顶部
hax
无忧元老
Rank: 8Rank: 8



UID 76364
精华 2
积分 5024
帖子 364
威望 4661
阅读权限 90
注册 2007-9-24
来自 Shanghai
状态 离线
 
发表于 2009-9-20 22:00  资料  个人空间  主页 短消息  加为好友 
IE,没有什么好说的了,一个狂妄的巨人。它最先提供支持 W3C DOM 标准和XMLHttpRequest 组件,但却是最后一个完全支持客户端JavaScript 语言标准的浏览器。


这个不用翻书。只要请作者说明一下IE什么时候开始支持addEventListener了,然后解释一下什么是“客户端js语言标准”,ie是怎样完全支持之了?

顶部
abcdreamer
霸王龙
Rank: 6Rank: 6


UID 94366
精华 0
积分 2774
帖子 976
威望 951
阅读权限 70
注册 2009-4-18
来自 银河系
状态 离线
 
发表于 2009-9-20 22:13  资料  个人空间  短消息  加为好友  QQ
通读《javascript权威指南》的路过
e文版。

顶部
hax
无忧元老
Rank: 8Rank: 8



UID 76364
精华 2
积分 5024
帖子 364
威望 4661
阅读权限 90
注册 2007-9-24
来自 Shanghai
状态 离线
 
发表于 2009-9-20 22:17  资料  个人空间  主页 短消息  加为好友 
据说,Opera 浏览器对标准的支持度最高,在特殊用户群中具有很高的威望,但是它的瑕疵也非常明显。


我想问的是,Opera有什么明显的瑕疵了?

本人绝非Opera的粉丝,我还骂过Opera在支持标准上犯贱,但是我从来没看出来Opera存在什么“明显瑕疵”,也从来没听任何一个web开发者说过Opera存在“明显瑕疵”。爱民啊,不支持caller(现在好像已经支持了)怎么也不能算明显瑕疵吧。要说bug谁没有涅,而且论bug的奇异程度,谁敢跟IE比肩?

作者该不会告诉我们,他也不知道什么瑕疵,只是“据说”而来。


同之前对IE的忽捧忽批一样,作者这种天马行空不负责任的评价,对初学者是个什么引导呢?有个性有看法是一回事,但你不能没证据就瞎掰,当初学者好忽悠啊?

顶部
hax
无忧元老
Rank: 8Rank: 8



UID 76364
精华 2
积分 5024
帖子 364
威望 4661
阅读权限 90
注册 2007-9-24
来自 Shanghai
状态 离线
 
发表于 2009-9-20 22:32  资料  个人空间  主页 短消息  加为好友 
当然,也容易引发垃圾泛滥,甚至出现内存外溢的现象。

完整句子是:

只有当闭包体的外部引用被全部设置为 null 值时,该闭包才会被回收。当然,也容易
引发垃圾泛滥,甚至出现内存外溢的现象。


这段话本身前后连接就有问题,然而这里我并不是想说作者语文水平的问题。爱民,我其实也没去追究overflow一定是溢出,不能叫外溢。

而是这里根本不干内存溢出什么事。内存溢出,如果有,那也是引擎实现的问题,跟闭包或者任何js语言特性有毛关系?

除非作者现在说他是把memory leak翻译成了内存外溢。但是就算要这样狡辩,其实我们也知道memory leak虽然跟闭包有关系,但是本质上并不是闭包造成的,而是微软js引擎和dom对接实现上的bug。

顶部
hax
无忧元老
Rank: 8Rank: 8



UID 76364
精华 2
积分 5024
帖子 364
威望 4661
阅读权限 90
注册 2007-9-24
来自 Shanghai
状态 离线
 
发表于 2009-9-20 22:42  资料  个人空间  主页 短消息  加为好友 
l 计算需要对象,于是就产生了数据。
l 计算需要效率,于是就产生了类型。
l 计算需要控制,于是就产生了变量。


我为什么要列出这个?

爱民你还给他分析,给他建议,你还真好脾气,我是根本嗤之以鼻。其实一眼看出,他想冒充大师,弄点金玉良言出来,他根本不管讲的东西有没有道理,有没有逻辑,只是追求一个形式。这种大师语录体,不是人人能干的。没有金刚钻就不要揽瓷器活。

顶部
 



当前时区 GMT+8, 现在时间是 2010-7-31 04:41
苏ICP备05080427号

Powered by Discuz! 5.5.0  © 2001-2007 51JS.COM
Processed in 0.335979 second(s), 10 queries , Gzip enabled

清除 Cookies - 联系我们 - 无忧脚本 - Archiver