javascript prototype 学习笔记

本文通过一个具体的示例详细解析了JavaScript中的原型继承机制,展示了如何动态地为对象添加方法,并能在实例化对象后继续扩展其功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

javascript与其他面向对象语言有很大的不同,我有时总感觉如果没学过c++,.net而直接开始学javascript反而会更好一些,反之看到javascript的某些特性,你一定会惊呼:居然还有这种操作!

首先推荐一篇不错的文章https://javascriptweblog.wordpress.com/2010/06/07/understanding-javascript-prototypes/

这篇文章有中文翻译,而且翻译水平相当不错http://www.oschina.net/translate/understanding-javascript-prototypes

高手写文章总是点到为止,对于我们这些初学者就需要多琢磨才能真正理解其中的精妙

下面我就来亲自剖析一下其中的一个例子,以下操作直接在google chrome的console里完成。

原文中有一个例子,声明了一个计算圆的面积的类Circle。

var Circle = function(radius){
  this.radius = radius;
}

这个对象只是声明了一个属性radius,而并没有怎么计算面积的函数。

然后先让我们创建一个此函数的实例,取名为a.

var a = new Circle(3);
这时候我们看看直接在console里检查一下a的内容:


再看看a从Circle中继承了什么


这时候我们在所谓的基类Circle中增加一个计算面积的方法area

Circle.protype.area = function(){
  return Math.PI*this.radius*this.radius;
}
请注意,这个方法area是在声明了实例a之后添加的,然后这时候我们再来检查一下a的内容

a的内容没有变化,再看看a从Circle中继承了什么

奇迹发生了,a中多了一个方法area,尽管这个方法是在a被声明之后才加入到其基类Circle中的,所以在调用a.area()时毫无意外的得到了半径为3的园的面积

哎,即使对于我这种偶尔用用C++的人来说,也只能感慨:居然还有这种操作。


本文系本人原创,如要转载请注明出处。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值