欢迎光临
我们一直在努力

JavaScript支持面向对象的开发(1)

建站超值云服务器,限时71元/月

如果你使用javascript编程,你或许会怀疑它是否包含了面向对象(oo)的结构。实际上,javascript的确支持面向对象的架构――在某种程度上。本文将通过一个可扩展向量图形(svg)的实例来说明javascript的oo结构。

我如何在类中定义方法和属性?
JavaScript支持面向对象的开发(1)

JavaScript支持面向对象的开发(1)
JavaScript支持面向对象的开发(1)       

oo开发的一个基本方面是类及其相应的方法和/或属性的使用。javascript通过function关键字支持类(及其属性)的使用。下面的代码定义了一个叫做figure的javascript类:
function figure() {
this.centerx=0;
this.centery=0;
this.area=0;
this.transform = transform; // methods are defined like this
function transform(movex,movey,angle) {
this.centerx += movex;
this.centery += movey;
} }

这个figure类有三个属性:centerxcentery,和area。另外,它还有一个方法叫做transform()。前三行是这个类的构造器。

但是它看起来不像一个类

你会想figure()看起来不像一个类,而更像一个javascript的函数。那么为什么figure()定义的是个类?

严格的说,figure()函数没有定义一个类,但是它仿造了一个。它实际上创建了一个对象,在括号里的代码使这个对象的构造器。javascript的对象支持是很基础的,它并不区分类和对象。
这就引到了问题为什么figure()函数创建的是一个对象。对象是可以有属性和方法的。基本上,因为figure()函数同时包含了属性和方法,它就是个对象。在javascript里,所有的函数即是对象又是可调用的代码块。这不像它听起来的那样容易被误解。要创建一个figure()类/对象,你只用使用以下句法:
myfigure = new figure();
你也可以把figure()函数当作代码块调用,就像这样:
figvalue = figure();
变量figvalue没有被定义是因为代码块figure()没有返回任何值。如果你把return(this.area)加到函数的最后一行,figvalue就会有个值0。所以figvalue是个类型数字,myfigure是对象 rectangle的实例。

为什么所有的变量前面都一个“this”?

这个关键字this表示这是对象的实例变量,可以使用myfigure.centerx从对象外部访问。要让变量成为私有变量,去掉前缀this就行了。this.transform = transform这一行让方法成为公用方法。这个方法通过myfigure.transform(100,100,0)调用。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » JavaScript支持面向对象的开发(1)
分享到: 更多 (0)

相关推荐

  • 暂无文章