标题: [推荐] 推荐一本JavaScript新书
  本主题由 Rimifon 于 2009-9-24 22:52 关闭 
css8
爬虫
Rank: 2



UID 93201
精华 0
积分 143
帖子 29
威望 24
阅读权限 20
注册 2008-11-3
状态 离线
 
发表于 2009-9-20 23:52  资料  个人空间  短消息  加为好友 
首先,就hax 、月影和爱民对样章中的技术问题进行指正表示感谢,刚才上来时看了一下爱民的理性分析,感染了我,我应该做一下理性的回应,以对大家的关心表示敬意,同时也想就个别问题与JavaScript专家们切磋、沟通一下。

由于问题很多,我还是按着hax提出的问题,以及爱民分析的思路进行梳理,有些问题可能来不及回应,等回头补上。

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

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

“作用域(链)”通常是一个运行期的概念。这话没错,我列出的一个长长的属性存取,实际上它是原型域链,爱民后半句也提到了,原型域与原型域链在JavaScript中是一个很重要的概念,不知道二位专家认可吗?就这个话题咱们还可以继续讨论,我当时在写作时,也是考虑到这个JS特性才这样写。是否正确,还有待专家指正。

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的引用关系其实并没有发生变化。
综上:作者表达确有问题。

“a引用o”和“a.x = o;”不是一会事儿吧?我的理解是“a = o;”, 而a.x = o所表示的是对象属性的引用,不是一个概念吧?期待二位具体解释一下。当然,后面两个问题都是建立在这个观点基础之上,先就不说了。

QUOTE:
各家浏览器的JavaScript 引擎也各不相同,分 歧最明显的就是 DOM实现部分。
老实说,你讨论JavaScript就成了,把DOM拉进来做什么?DOM、CSS与JS三者是同一层级上的东西,按你的说法,却是JS包括了DOM——那么ECMA Script也该对DOM做标准化了?

JS和DOM是不分家的,虽然他们是独立的模块,但是两者依存关系非常严重,至少在浏览器中是这样的,所以大家的概念都把JS与DOM混淆在一起。
HTML、CSS与JS三者应该是同一层级上的东西。
ECMA Script仅是一个标准规则,而DOM也是一个标准规则,浏览器在具体应用时,是把他们融合在一起了,这样说可能不严谨,但习惯上是这样认为的。
各家浏览器对于JavaScript脚本的分歧主要在于DOM,而对于JavaScript核心方面基本上保持一致,当然也存在差异。

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

“计算需要目标”,嗯,这样更科学,呵呵。
好像64位的系统比32位的系统更高效。不然微软不断向高位系统发展,这个问题应该是这样,还有待争论。
如果说“计算目标(或被计算对象)需要标识,所以产生了变量”,大概更好,嗯,我当时考虑的要兼顾易读、易解,没有过于在技术上死扣,不过还是很谢谢爱民这种严谨、认真的精神。在下应虚心学习。

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

这里是误解了,我的本意是说明,如果没有语言中的各种数据类型概念,不过还是很感谢爱民指正。其中“双字节一次可以操作 32 位数据”,这里应该是“16位”,是的,我口误了,汗~

最后,容我辩解一下:在追求技术严谨性和通俗性时,我多选择了后者,所以很多忽略了技术的严谨性,很多语言经不起专家的推敲,实在抱歉。不过,我是这样认为的:把技术写得更通俗、随和一些,往往读者更喜欢阅读。正如,读者爱买《大话设计模式》,而敬畏《设计模式》一样。

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

嗯,致敬。

QUOTE:
弱类型……当然这也是以牺牲开发速
度和效率为代价的,所以它成不了大气候
认识问题吧。不过不知道作者是如何比较得出这样的结论的。

这个观点来源于外文资料。不过,JavaScript确实如此,仅适合做些小工作,在关键应用上,它的执行效率是必须顾虑的问题。

QUOTE:
更为有趣的是:浮点数是以字符串的形式进行存储的。
css8错了,除了在文本代码里面,没这么存储的。可以建议看看IEEE标准,或者看引擎源代码。

这个观点也是参考过一份资料,等我再核实一下。

QUOTE:
一般不建议大家使用八进制数值直接量。因为很多时候,JavaScript 会误解析为十进制数值。
这种建议无意义的。用不用,是应用说了算。没有无聊到非得拿8进制来做事。再说,js里面,还有13、15、25进制的,有必要一一建议吗?

这句话是在上下文中说的。
同时,8进制,有时会用到,而13、15、25进制基本上用不上。

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:
如果属性值是函数,则该属性就成为对象的方法,读取这个特殊的属性值时,就必须附加小括号运算符
“读取这个特殊的属性值时”,其实不需要加括号运算符。反倒是“执行/调用”它时,才需要加的。这个,作者在概念的陈述上,真的不严谨。

是的。

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?与变量同义吧?有必要区分么?
……[/
quote]

回收栈区空间。
回收对象,等于回收了它的所有成员。


还有未回应的问题,等我仔细阅读后,再与你们沟通一下。
最后再次向几位专家的敬业精神表示敬意。
谢谢!

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



UID 76364
精华 2
积分 5024
帖子 364
威望 4661
阅读权限 90
注册 2007-9-24
来自 Shanghai
状态 离线
 
发表于 2009-9-21 02:02  资料  个人空间  主页 短消息  加为好友 
嘿,你就继续白乎下去吧。说老实话,我也不指望啥,因为你书都出了,难道还要你跟大伙说,不行,我得把书收回去回炉重炼一下。你答应,飞思也不答应啊。

我只希望,所有作者在写书,特别是为初学者写书的时候,需记得作为引路人的责任,出版社不给认真做技术评审,你自己找人review啊。各位大牛,在写书评的时候,也不要只顾面子,忘记了有多少后进一直拿你们当指路明灯啊!

还有,你也别捧我敬业,今天已经有n个人来骂我不务正业了,还拖了爱民下水。想想也是,俺手头的项目停了4个月,不赶紧开工,还在这里陪着吃口水,真是不明事理啊。

顶部
kimmking
小虫
Rank: 1



UID 87714
精华 0
积分 7
帖子 4
威望 4
阅读权限 10
注册 2008-5-30
状态 离线
 
发表于 2009-9-21 08:56  资料  个人空间  短消息  加为好友 
从不买书的人,路过下。说两句~
1、首先对hax的精神和努力,爱民的认真表示敬意。
2、恭喜lz出书,虽然不认识你。
3、希望lz和hax,aiming一样认真负责。技术怎么样,写作能力怎么样是一回事,态度是另一码事儿。





js new hand
顶部
sx-ljm
小虫
Rank: 1



UID 7712
精华 0
积分 5
帖子 2
威望 2
阅读权限 10
注册 2004-1-2
状态 离线
 
发表于 2009-9-21 14:43  资料  个人空间  短消息  加为好友 
高手口水,我当雨露

顶部
temade
大恐龙
Rank: 4
忁走の腦驂瀦


UID 5206
精华 0
积分 846
帖子 496
威望 489
阅读权限 50
注册 2003-8-27
来自 北京
状态 离线
 
发表于 2009-9-21 15:48  资料  个人空间  短消息  加为好友 
原本就是个广告贴,让高手们掺合——火了~~~





设计模式!设计模式!!设计模式!!!设计模式……设计模式…………设计模式………………还是不会……
顶部
css8
爬虫
Rank: 2



UID 93201
精华 0
积分 143
帖子 29
威望 24
阅读权限 20
注册 2008-11-3
状态 离线
 
发表于 2009-9-21 20:40  资料  个人空间  短消息  加为好友 
先声明一下,发下面这个图没有其他意思,这不是广告,也不是怂恿。它是一位读者在论坛里发的帖子,我也是刚刚发现,原来在互动出版网买书还有这么大的实惠,以前还真的不知道。
现在我发出来这个截图,只是想告诉那些有意购买本书的网友,建议不妨试一试。

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


UID 94366
精华 0
积分 2774
帖子 976
威望 951
阅读权限 70
注册 2009-4-18
来自 银河系
状态 离线
 
发表于 2009-9-21 22:16  资料  个人空间  短消息  加为好友  QQ

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



UID 7929
精华 3
积分 1419
帖子 130
威望 820
阅读权限 70
注册 2004-1-11
状态 离线
 
发表于 2009-9-22 00:34  资料  个人空间  短消息  加为好友 
哈哈哈哈~~哈哈哈哈~~哈哈哈哈~~哦哈哈哈哈~~
呀,这里有个贴子么?我来过么?谁说我来过?各位,这里有人么?从前有座山,山上有座庙,庙里有个老和尚,老……
哈哈哈哈~~哈哈哈哈~~哈哈哈哈~~哈哈哈哈~~哈哈哈哈~~哈哈哈哈~~哈哈哈哈~~哈哈哈哈~~哈哈哈哈~~哈哈哈哈~~哈哈哈哈~~哈哈哈哈~~哈哈哈哈~~


顶部
未注册会员
小恐龙
Rank: 3Rank: 3



UID 46193
精华 0
积分 480
帖子 80
威望 60
阅读权限 30
注册 2006-1-19
状态 离线
 
发表于 2009-9-22 08:40  资料  个人空间  短消息  加为好友  QQ
老和尚怎么了?

顶部
asfman
大恐龙
Rank: 4



UID 64028
精华 0
积分 895
帖子 222
威望 236
阅读权限 50
注册 2007-1-12
状态 离线
 
发表于 2009-9-22 10:24  资料  个人空间  短消息  加为好友 
建毅不管是js高手还是初学者都去买本周爱民的看看http://www.china-pub.com/38730。我也始终觉得出书不是儿戏。能使人进步,也能使人误入歧途。

顶部
freewind22
小恐龙
Rank: 3Rank: 3


UID 84565
精华 0
积分 466
帖子 160
威望 193
阅读权限 30
注册 2008-3-27
状态 离线
 
发表于 2009-9-22 10:47  资料  个人空间  短消息  加为好友 
面子问题,,,呵```

顶部
Ajaxer
爬虫
Rank: 2



UID 57461
精华 0
积分 87
帖子 9
威望 58
阅读权限 20
注册 2006-10-12
状态 离线
 
发表于 2009-9-22 11:47  资料  个人空间  短消息  加为好友 


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

调用方法除了使用a.b.c()的方式外,至少还存在a["b"]["c"]()这种方式吧。
对于前一种,数字型不能直接使用是为了避免区分不了圆点是小数点还是调用方法。

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


顶部
css8
爬虫
Rank: 2



UID 93201
精华 0
积分 143
帖子 29
威望 24
阅读权限 20
注册 2008-11-3
状态 离线
 
发表于 2009-9-22 11:49  资料  个人空间  短消息  加为好友 
本书有错误码?
有,hax帮助指出了,其中几个确实存在错误,在此再次表示感谢。

但是,如hax所言,错误随处皆是吗?
这个就未必了,hax的言论未免让人感觉危言耸听。

我统计了hax指出的所谓31处错误,真正算上技术错误的,也很寥寥,不过几个罢了。
当然,能够指出31处,说明在表述上还是存在歧义,如果再表述严谨些会更好。

但是,真的如同爱民那样去分析,就会好吗?(声明:此处是针对爱民跟帖的解读,非针对爱民所写的图书)
这个也未必。本书不是迂腐的学术专著,本书是通俗的科普读物。如果有人非要想把书中带有个性的、主观色彩的语言硬要往严谨的学术上靠,这个显得很不厚道了,有本事,你去一个字一个字的死扣扣《大话设计模式》或者《大话设计存储》。脑白金火了,大家都骂脑白金,但是脑白金不会因为被骂而萎靡不振,反而更受用户欢迎。

hax说本书是忽悠初读者。这个观点我无法接受。说本书是垃圾,本书不行,嘴长在别人身上,爱怎么说别人管不了,但是以此否定一切,就未必恰当了。每个人都不是傻子,不是靠你说或者我说,就去盲目行事。拿几个错误来说事儿,只能显示你的偏激。

如果就技术话题进行讨论本书,也就罢了,但是有的人就是动机不纯,除了叫嚣着在这里骂,反而还倒咬我一口,甚至还跑到外面吆喝,实在可笑,你以为你在外面呐喊几声,本书就没有市场了。市场自有市场的规律,读者自有读者的选择。看来这个口水战不是你我所愿了。

hax的言过其辞,我不想多论。我强忍着怒火,仅就他所谓的错误从技术上与大家讨论。不然,因为hax的一席话,用一顶硕大的黑帽子扣在本书的头上,实在冤枉。

QUOTE:
饶是如此,closure还算是个疑难概念,但是本书作者居然能说出“浮点数是以字符串的形式进行存储的”,吾只有张口结舌了。

请你查阅一下《JavaScript高级程序设计》第2章,如果你没有书,告诉我,我复印给你看看。


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

顶部
css8
爬虫
Rank: 2



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


QUOTE:
原帖由 hax 于 2009-9-20 22:32 发表
当然,也容易引发垃圾泛滥,甚至出现内存外溢的现象。

完整句子是:

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


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

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

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

是我的无知,还是你的傲慢,请你查阅一下《JavaScript权威指南》第5版第8章。

顶部
css8
爬虫
Rank: 2



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


QUOTE:
原帖由 hax 于 2009-9-20 22:42 发表
计算需要对象,于是就产生了数据。
l 计算需要效率,于是就产生了类型。
l 计算需要控制,于是就产生了变量。


我为什么要列出这个?

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

我没有臆想症,请你不要乱扣帽子。

顶部
winter
超级版主
Rank: 8Rank: 8
5毛发一贴,千里不留行。


UID 65747
精华 11
积分 7582
帖子 3353
威望 3335
阅读权限 150
注册 2007-2-27
状态 离线
 
发表于 2009-9-22 13:03  资料  个人空间  短消息  加为好友 


QUOTE:
原帖由 css8 于 2009-9-22 11:49 发表
本书有错误码?
有,hax帮助指出了,其中几个确实存在错误,在此再次表示感谢。

但是,如hax所言,错误随处皆是吗?
这个就未必了,hax的言论 ...
QUOTE:
饶是如此,closure还算是个疑难概念,但是本书作者居然能说出“浮点数是以字符串的形式进行存储的”,吾只有张口结舌了。
请你查阅一下《JavaScript高级程序设计》第2章,如果你没有书,告诉我,我复印给你看看

其实即使《JavaScript高级程序设计》这样的经典著作也未必是完全正确的 下面内容摘自ECMA262:
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, except that the 9007199254740990 (that is, 253-2) distinct "Not-a-Number" values of the IEEE Standard are represented in ECMAScript as a single special NaN value.
注意红色的部分 JS对浮点数的存储是遵守IEEE标准的

当然 从另一方面说 《JavaScript高级程序设计》都有错误 也没有必要要求css8的书字字准确
hax同学技术毋庸置疑 但是有些过于主观的论断 比如这种"其实一眼看出,他想冒充大师,弄点金玉良言出来,他根本不管讲的东西有没有道理,有没有逻辑,只是追求一个形式" 我觉得还是保留的好





顶部
css8
爬虫
Rank: 2



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


QUOTE:
原帖由 hax 于 2009-9-20 22:17 发表
据说,Opera 浏览器对标准的支持度最高,在特殊用户群中具有很高的威望,但是它的瑕疵也非常明显。


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

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

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


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

瑕不瑕疵?你自己用Opera浏览几个网站就知道了。当然,新版本比过去改善多了。
“据说”不是瞎想,不是胡编乱造,是有操作体会的,且很多同行自有同感,非我一个人主观编造。让我拿出证据,我只能回敬:对不起,请你自己动手试一试。
你的这种言论,让我想起了于丹的《于丹论语心得 》。于丹的书出来时,当时国内有十几个中国古代文学专家联名上书,甚至于起诉,说于丹言论偏离史实,有损《论语》的形象。但是,此事后来也无趣不了了之,于丹的《于丹论语心得 》仍然是大家最爱看的书,那些专家们的《论语》解读也不知道被尘封在图书馆中多少年了。

顶部
css8
爬虫
Rank: 2



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


QUOTE:
原帖由 hax 于 2009-9-20 21:55 发表
但是 IE 却是用户体验最好的浏览器之一

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

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

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

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

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

谁说我不负责任,难道板起面孔说话就是负责任。实话说,本书就是想与读者聊聊天,在聊天中讲技术。我没有那么大的鸿鹄之志,做学术盛典。我不知道,你所谓的“只有把初学者搞到糊里糊涂”,真的能够让读者搞糊涂,还是你自己被搞糊涂了。你有调查吗?如果按着你的逻辑去咬文嚼字,没准是会被弄糊涂。

“其实作者在很多地方批评IE,言辞夸张,……,一会儿又肯定ie是体验最好”,这正是本书的个性,书要有情感,只有作者有情感,要让书易读、易解,首先要解放作者的思想。

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



UID 24714
精华 9
积分 4243
帖子 1553
威望 1918
阅读权限 150
注册 2005-3-9
状态 离线
 
发表于 2009-9-22 13:29  资料  个人空间  主页 短消息  加为好友  QQ
计算机教材不是科普读物,语言风格是一回事,内容上该严谨的还是应该严谨。

任何一本书有争论是难免的,就像有错误也是难免的,所以css8你也不用太较真。。。

把讨论变成掐架就没意思了,评论也是人的自由,作为作者也应该大气些,何苦对每句都针锋相对一一计较

顶部
css8
爬虫
Rank: 2



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


QUOTE:
原帖由 hax 于 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的意思。。。


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

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

不是“太随意”,而是更容易理解。

“变量o所引用的那个对象”,这话没有错。但是你在文章总这样描述吗,不知道,“覆盖”和“改写”有什么本质区别,变量o的值为1,我再传递一个值给它,它原来的那个值就被新值覆盖了,难道这种描述不对,非要说是用新值改写了变量的旧值。我不知道是我愚昧,还是你的迂腐?

是使用严谨、艰涩的语句描述让初学者走火入魔,还是用一种通俗的大白话更容易让读者理解,请你搞明白。

顶部
 



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

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

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