[读书笔记]JavaScript面向对象编程.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:6 大小:106KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

[读书笔记]JavaScript面向对象编程.doc

[读书笔记]JavaScript面向对象编程.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

HYPERLINK"http://msdn.microsoft.com/msdnmag/issues/07/05/javascript/default.aspx?loc=zh"\t"_new"http://msdn.microsoft.com/msdnmag/issues/07/05/javascript/default.aspx?loc=zhhttp://www.cnblogs.com/xdotnet/archive/2007/05/20/js_oop_program.html摘要:我们在开发Web程序时或多或少都会应用到Javascript脚本程序,在当今的AJAX如此盛行的时代,JS的作用将不断的提升。这个新一代的Web应用程序的复杂性和交互性需要程序员以完全不同的方法来编写JavaScript代码,我们在编写一次性的脚本显然已经不能够满足这样的需求。面向对象编程(OOP)是一种流行的编程方法,很多JavaScript库中都使用这种方法,以便更好地管理和维护基本代码。我们可以从ASP.NETAJAX库或SilverLight库以及经常见到的prototype.js库等等都采用了这种编程方式。JS支持OOP,但是又和C++,C#等非常不一样,所以这种概念一直会让人难以琢磨,这编文章将讲述JavaScript语言实际上如何支持面向对象编程,我们又如何应用这种方式来编写我们JS程序。JavaScript对象在.NET中我们知道,万物皆为对象,也就是类实例化后得到的就是对象,每个对象都有各自不同的属性和方法。JavaScript中的对象和他有所不同,我们知道在JS中我们可以通过.或[]运算符来获取或设置对象中的方法或属性,我们可以把它想象为包含键/值对的字典。下面我们来看个例子:1varobj=newObject();2obj.Now=newDate();3alert(obj.Now);我们可以用[]运算符来达到同样的效果:1varobj=newObject();//{};2obj["Now"]=newDate();3alert(obj.Now);我们还可以直接定义它的属性,效果一样:1varobj={"Now":newDate()};2alert(obj.Now);以上三种方法都能够达到同样得效果,如果你用过C#3.0他的匿名赋值就有点像,也许它就是跟JS学的(只是猜测)。您不必预先声明属性Now—如果obj没有该名称的属性,该属性将被直接添加到obj。这是不是很像字典,我们可以不断地往字典里加入键/值对,我想把它想象成字典最容易理解多了。JavaScript函数在上面所讲述的是对象的属性,我们可以把属性值直接付给一个键(名称),其实JS的方法也是这样。JavaScript函数实际上是具有与它关联的可执行代码的对象,我们定义方法时可以把我们的函数符给一个对象(类)中的名称(方法名称)。对于方法我想大家应该都很熟悉,这里就不多说了。JavaScript原型在使用JavaScript的面向对象编程中,原型对象是个核心概念。在JavaScript中对象是作为现有示例(即原型)对象的副本而创建的,该名称就来自于这一概念。此原型对象的任何属性和方法都将显示为从原型的构造函数创建的对象的属性和方法。可以说,这些对象从其原型继承了属性和方法。在JavaScript中,每个函数都有名为“prototype”的属性,用于引用原型对象。此原型对象又有名为“constructor”的属性,它反过来引用函数本身。当我们用用new创建对象时,所创建的对象将继承此函数的prototype属性。每个JavaScript对象都继承一个原型链,而所有原型都终止于Object.prototype。当您尝试访问对象的属性/方法时,JavaScript将检查该属性/方法是否是在该对象中定义的。如果不是,则检查对象的原型。如果还不是,则检查该对象的原型的原型,如此继续,一直检查到Object.prototype。所以我想如果用很长的prototype链对于性能方面应该会有所影响,但是现在的客户端足以承受,因此在ASP.NETAJAX中用了相当大的prototype。JavaScript闭包由于我对这个概念也不是特别的熟悉这个咚咚,它是JavaScript的一个高级功能,闭包是当内部函数绑定到它的外部函数的本地变量时所发生的运行时现象,这很容易让我们想到在C#中匿名的方法。我们可以通过一下实例来更好的理解这个功能:1varisMoreThan300=filter(2function(x){return(x>300)?true:false;},3num);4以上事例说明了当前数num是否比300大,如果比300大我们就返回true,否则反回fa