首页 | 乐园 | 淘宝店 | 社区 | 电驴 | 网页游戏 | 网址大全
attach

精通JavaScript(图灵计算机科学丛书).pdf

最新评论

 
内容
评分
 

相关评论

heleiz 2009/11/14 19:49:24 [0] [0]

白光盘呀

回复

luck5227 2009/10/30 19:57:04 [0] [0]

引用(小丫工作室 @ 2009-08-19, 01:26 AM) *
引用(csywashington @ 2009-08-18, 10:44 PM) *

javascript是基于对象。面对对象有三大特性——封装、继承和多态。
javascript没有继承和多态。当然不能算是面对对象。

在JavaScript中,并不直接从文法上支持继承,换句话说,JavaScript没有实现“继承”的语法,从这个意义上来说,JavaScript并不是直接的面向对象的语言。
在JavaScript中,继承是通过模拟的方法来实现的。

一般程序员都是这样想的,JavaScript有类,但是不支持继承与多态,所以只有封装的语言就不是面向对象的,而是基于对象的。

如果JavaScript没有继承,那么下面的代码:
引用
str = new String();
alert(str instanceof Object); //true

怎么就返回了true了?String不是继承自Object的?子类的对象也是父类的对象嘛。

下面引用一下本帖的图书《精通JavaScript》的一段话:
引用
2.2 面向对象基础
面向对象JavaScript这个词其实有些多余,因为JavaScript这门语言就是完全面向对象的,也不可能以非面向对象的方法来使用。


你说JavaScript没有继承的语法,而继承在JavaScript里是通过模拟的方法实现的,那是因为你用C++和Java的眼光看JavaScript,当然觉得它另类。我再引用《JavaScript语言精髓与编程实践》里的一段话:
引用
3.3 JavaScript中的原型继承
“面向对象”有三个基本特性,即封装,继承和多态。一般来说,三个特性都完全满足的话,我们称为“面向对象语言”,而称满足其中部分特性的语言为“基于对象语言”。
“对象系统”的继承特性,有三种实现方案,包括基于类(class-based),基于原型(prototype-based)和基于元类(metaclass-based)。这三种对象模型各具特色,也各有应用。在这其中,JavaScript没有采用我们常见的类继承体系,而是使用原型继承来实现对象系统。因此JavaScript没有“类(Class)”,而采用一种名为“构造器(Constructor)”的机制来实现类的某些功用。也因此JavaScript被称为“无类语言”。


“面向对象语言”,这里面向的是对象(Object),而不叫“面向类(Class)”,并非只有类才能实现对象,所以从C++、Java的角度看JavaScript,当然觉得它是无法完全实现面向对象的,是残缺的,因为它是没有类(Class)的。

封装、继承、多态,JavaScript都有,所以JavaScript是一个彻头彻尾的,原生的面向对象语言。继承是原型继承,多态则不必说,动态语言怎么会不实现多态。反倒是封装,JavaScript做的不完善,它只能实现public和private,没法实现protected。


长见识了,呵呵~~

回复

aggressive_m 2009/10/27 20:50:01 [0] [0]

谢谢,好书!

回复

iamgoodworld 2009/10/27 10:45:28 [0] [0]

正需要这方面的书籍,谢谢了。

回复

fengqipiaobo 2009/10/26 18:55:00 [0] [0]

支持!下完也不离开!(顺便问下,有没有源码下载的呀!)

回复

ifree0 2009/10/23 22:30:46 [0] [0]

好好来学习啊

回复

bin20060407 2009/10/23 00:20:42 [0] [0]

楼主 辛苦了

谢谢你

回复

jjp124 2009/10/18 10:45:26 [0] [0]

谢谢分享,收藏了,呵呵……

回复

ggff2008 2009/09/25 10:05:24 [0] [0]

好书啊

回复

色阶 2009/09/16 08:27:34 [+1] [0]

好书一本. 一本好书.楼主好人.谢谢

回复

色阶 2009/09/07 11:44:31 [+2] [0]

大家畅所欲言,学术交流。。真挺好的。。谢谢

回复

lefan_3www 2009/09/03 17:20:10 [0] [0]

楼上的都说是好书,等我看完了再来回复。

回复

focus009 2009/08/19 17:44:46 [0] [0]

下来学习 谢谢

回复

yangyuhi 2009/08/19 11:44:23 [0] [0]

引用(小丫工作室 @ 2009-08-18, 07:10 PM) *
引用(yangyuhi @ 2009-08-18, 04:11 PM) *
引用(小丫工作室 @ 2009-06-23, 08:17 AM) *
引用
部分楼层已被隐藏,点击展开全部

谁说JavaScript是基于对象的语言?JavaScript的完整的面向对象的语言,书中介绍的Dojo、Prototype这些类库都是JavaScript的精髓。

javascript确实是基于对象的语言(而不是面向对象的).Dojo,ProtoType不是类库,也不是javascript的精髓,它们是用javascript开发出来的优秀框架.

嗯,Library和Framework总是分不太清楚,但是jQuery和Dojo应该算是框架,因为他们扩展的JavaScript语言。

Prototype和Dojo还有jQuery之于JavaScript,用“精髓”一词可能不太恰当,我的意思是说JavaScript因为他们而发扬光大,就好像Ruby on Rails之于Ruby一样。

JavaScript是一种基于原型的语言,可以参考:
http://en.wikipedia.org/wiki/Category:Prot...anguages (http://en.wikipedia.org/wiki/Category:Prototype-based_programming_languages)

而“Prototype-based programming is a style of object-oriented programming”,所以JavaScript是一种面向对象的语言。只是基于原型的语言比较特殊,列表里除了JavaScript和相关的ActionScript、JScript、ECMAScript,我就只认识一个Lua了。如果总按照C++、Java等常见OOP语言的思维方式看JavaScript,当然会觉得JavaScript不是面向对象的,然后斥责JavaScript“其中一些不常见的用法就将人搞得神魂颠倒”。

如果总是按照C++、Java的思路,也不会理解函数式编程、闭包这些JavaScript里的东西。而JavaScript并不是什么老掉牙技术,他的思想是和Python和Ruby是一脉相通的,远超过C++和Java。你要是不理解他的思想,那么你就开发不出jQuery、Prototype、Dojo、Yahoo! UI Library、Ext~~

谢谢回复,这里学习了.

回复

小丫工作室 2009/08/19 01:26:06 [+3] [0]

引用(csywashington @ 2009-08-18, 10:44 PM) *

javascript是基于对象。面对对象有三大特性——封装、继承和多态。
javascript没有继承和多态。当然不能算是面对对象。

在JavaScript中,并不直接从文法上支持继承,换句话说,JavaScript没有实现“继承”的语法,从这个意义上来说,JavaScript并不是直接的面向对象的语言。
在JavaScript中,继承是通过模拟的方法来实现的。

一般程序员都是这样想的,JavaScript有类,但是不支持继承与多态,所以只有封装的语言就不是面向对象的,而是基于对象的。

如果JavaScript没有继承,那么下面的代码:
引用
str = new String();
alert(str instanceof Object); //true

怎么就返回了true了?String不是继承自Object的?子类的对象也是父类的对象嘛。

下面引用一下本帖的图书《精通JavaScript》的一段话:
引用
2.2 面向对象基础
面向对象JavaScript这个词其实有些多余,因为JavaScript这门语言就是完全面向对象的,也不可能以非面向对象的方法来使用。


你说JavaScript没有继承的语法,而继承在JavaScript里是通过模拟的方法实现的,那是因为你用C++和Java的眼光看JavaScript,当然觉得它另类。我再引用《JavaScript语言精髓与编程实践》里的一段话:
引用
3.3 JavaScript中的原型继承
“面向对象”有三个基本特性,即封装,继承和多态。一般来说,三个特性都完全满足的话,我们称为“面向对象语言”,而称满足其中部分特性的语言为“基于对象语言”。
“对象系统”的继承特性,有三种实现方案,包括基于类(class-based),基于原型(prototype-based)和基于元类(metaclass-based)。这三种对象模型各具特色,也各有应用。在这其中,JavaScript没有采用我们常见的类继承体系,而是使用原型继承来实现对象系统。因此JavaScript没有“类(Class)”,而采用一种名为“构造器(Constructor)”的机制来实现类的某些功用。也因此JavaScript被称为“无类语言”。


“面向对象语言”,这里面向的是对象(Object),而不叫“面向类(Class)”,并非只有类才能实现对象,所以从C++、Java的角度看JavaScript,当然觉得它是无法完全实现面向对象的,是残缺的,因为它是没有类(Class)的。

封装、继承、多态,JavaScript都有,所以JavaScript是一个彻头彻尾的,原生的面向对象语言。继承是原型继承,多态则不必说,动态语言怎么会不实现多态。反倒是封装,JavaScript做的不完善,它只能实现public和private,没法实现protected。

回复

该文件创建于 2009-06-21 11:33:40
文件大小:
(74843979 字节)
文件指纹:
44419cc1649dded6f38d419f871c4848
文件格式:
PDF 文档
ed2k:
相关文件
精通JavaScript(图灵计算机科学丛书).pdf
相关资源
《精通JavaScript》(Pro JavaScript Techniques )高清扫描版 Amazon 五星盛誉图书[PDF]
by xfxgsun
相关分类
资料 电子图书
关于我们 | 诚聘英才 | 著作权声明 | 合作信息 | 广告事务
沪ICP备05001009号
©2003 - 2009 VeryCD.com Some Rights Reserved.