js基于面向对象的技术_0.doc

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE1/NUMPAGES1

js基于面向对象的技术

JavaScript继承详解(一)时间:

2009-07-08Tag:

继承面向对象与基于对象几乎每个开发人员都有面向对象语言(比如C++、C#、Java)的开发经验。

在传统面向对象的语言中,有两个非常重要的概念-类和实例。

类定义了一类事物公共的行为和方法;而实例则是类的一个具体实现。

我们还知道,面向对象编程有三个重要的概念-封装、继承和多态。

但是在JavaScript的世界中,所有的这一切特性似乎都不存在。

因为JavaScript本身不是面向对象的语言,而是基于对象的语言。

这里面就有一些有趣的特性,比如JavaScript中所有事物都是对象,包括字符串、数组、日期、数字,甚至是函数,比如下面这个例子:

//定义一个函数-addfunctionadd(a,b){add.invokeTimes++;returna+b;}//因为函数本身也是对象,这里为函数add定义一个属性,用来记录此函数被调用的次数add.invokeTimes=0;add(1+1);add(2+3);console.log(add.invokeTimes);//2模拟JavaScript中类和继承在面向对象的语言中,我们使用类来创建一个自定义对象。

然而JavaScript中所有事物都是对象,那么用什么办法来创建自定义对象呢?这就需要引入另外一个概念-原型(prototype),我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(prototype)的一个拷贝(实际上不是拷贝而是链接,只不过这种链接是不可见,给人们的感觉好像是拷贝)。

让我们看一下通过prototype创建自定义对象的一个例子:

//构造函数functionPerson(name,sex){this.name=name;this.sex=sex;}//定义Person的原型,原型中的属性可以被自定义对象引用Person.prototype={getName:function(){returnthis.name;},getSex:function(){returnthis.sex;}}这里我们把函数Person称为构造函数,也就是创建自定义对象的函数。

可以看出,JavaScript通过构造函数和原型的方式模拟实现了类的功能。

创建自定义对象(实例化类)的代码:

varzhang=newPerson(ZhangSan,man);console.log(zhang.getName());//ZhangSanvarchun=newPerson(ChunHua,woman);console.log(chun.getName());//ChunHua当代码varzhang=newPerson(ZhangSan,man)执行时,其实内部做了如下几件事情:

?创建一个空白对象(newObject())。

拷贝Person.prototype中的属性(键值对)到这个空对象中(我们前面提到,内部实现时不是拷贝而是一个隐藏的链接)。

将这个对象通过this关键字传递到构造函数中并执行构造函数。

将这个对象赋值给变量zhang。

文档评论(0)

尹邦乐 + 关注
实名认证
内容提供者

尹邦乐

1亿VIP精品文档

相关文档