首页 > 语言 > JavaScript > 正文

Javascript创建类和对象详解

2024-05-06 15:16:34
字体:
来源:转载
供稿:网友

现总结一下Javascript创建类和对象的几种方法:

1、原始的创建方法:

<script type="text/javascript">  var person = new Object();  person.name="Amy";  person.sex="Woman";  person.show=function(){    document.write("name is: "+this.name+" ; sex is:"+this.sex);  }  person.show(); </script>

原始的创建方法对于熟悉面向对象的人来说难以接受,总感觉属性和方法的封装不是很紧密,这种封装是以“对象名”+“.”的方式进行,表示对象名后跟的属性和方法是这个对象拥有的东西,这个对象(例如:person)就是封装好的结果,你可以继续追加方法和属性,例如追加age属性:person.age=23;这种创建方法会让熟悉Java编程的人感到很难受。我们可以对原始的创建方法进一步“封装”一下,请看下一步:

2、工厂方法模式:

 <script type="text/javascript">   function personFactory(name,age,sex){     var ob=new Object();     ob.name=name;     ob.age=age;     ob.sex=sex;     ob.show=function(){       document.write(ob.name+" "+ob.age+" "+ob.sex);     }     return ob;   }   var person=personFactory("Amy",21,"Woman");   person.show(); </script>

工厂方法模式看起来更像一个类了,personFactory对原始的创建方法进行了封装,并将创建好的对象返回给person引用变量,person就可以引用这个创建好的对象了,但是还不够完美:你每一次创建一个对象, 并使用该对象调用show()方法时,都会创建新的show()函数,它们完全可以调用同一个show方法,优化方法是将show放到工厂外,如下:

 <script type="text/javascript">   function show(){     document.write(this.name+" "+this.age+" "+this.sex);   }   function personFactory(name,age,sex){     var ob=new Object();     ob.name=name;     ob.age=age;     ob.sex=sex;     ob.show=show;     return ob;   }   var person=personFactory("Amy",22,"Woman");   person.show(); </script>

从功能上说,上面的代码解决了函数重用问题,但是呈现方式不像是创建一个对象,熟悉Java的人仍感到难受。请看下一步:

3、构造方法模式:

 <script type="text/javascript">   function person(name,age,sex){     this.name=name;     this.age=age;     this.sex=sex;     this.show=function(){       document.write(this.name+" "+this.age+" "+this.sex);       document.write("<br>");     }   }   var per=new person("Amy",22,"Woman");   per.show(); </script>

上述代码的创建方式已经与Java类和对象的创建方式几乎一样了,封装好类的属性和方法,然后利用new关键字创建并返回一个对象,这不就是Java创建类和对象的过程吗,是的,就是这个过程,但是还可以优化,这种方式创建的对象调用show方法是也会即时地创建一个show函数,我们能不能创建一个所有对象公用的一个方法呢?就像Java类中的static方法一样,所有对象都使用同一个static方法,答案是可以的。请看下一步:

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选